You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Scattergl freezes when y values have lots of zeros #6792
This might be more to do with plotly.js or plotly.py, but I only have dash code to generate the plot so I am posting here. I do a lot of time series plotting for my work, so Scattergl comes in handy because I routinely plot 1000's of points on a trace. After updating to dash 1.21.0, I noticed the Scattergl plots hang on hovering when my trace has lots of consecutive zero y-values. In most cases the hover event will freeze the entire page and I need to close and reopen the page.
EDIT: I pinpointed this error to the upgrade from plotly.js v2.0.0-rc.1 to plotly.js v2.0.0-rc.2. If you put rc.1 in the assets folder, scattergl works fast like in the previous version of dash. If you put rc.2 in the assets folder, the issues return.
I am not a js developer, so I don't know how best to move this issue over to plotly.js with equivalent js example. Nevertheless, I looked the difference in rc.1 and rc.2 changelogs and found that in rc.2 there is an additional reference to scattergl: Improve scattergl performance when using typed arrays #5632, maybe that is causing the issue?
Check the code below for an example:
importplotly.graph_objectsasgoimportnumpyasnpimportdashimportdash_core_componentsasdccimportpandasaspdimportrandom# build datasetN=200000index=pd.date_range("7/1/2020", "7/1/2021", N)
vals=np.zeros(N)
# add some random non-zero data around the datasetforiinrange(50):
start=random.randint(0, N-50)
vals[start : start+50] =np.random.random(50)
# uncomment this line and see how Scattergl is much faster without the consecutive zeros# vals = np.random.random(N)# change Scattergl to Scatter to see how Scatter performs better with consecutive zerosfig=go.Figure()
fig.add_trace(
go.Scattergl(
x=index,
y=vals,
)
)
app=dash.Dash()
app.layout=dcc.Graph(figure=fig)
if__name__=="__main__":
app.run_server(host="0.0.0.0", port=8080, debug=True)
This issue also applies to unbalanced datasets (lots of consecutive 1s and occasionally 0s or vice versa). Also it doesn't need to be 1 and 0s. It can be other values, as long as the dataset has a length of consecutive values.
You can unfreeze the plot by disabling hovering (i.e., go.Scattergl(x=x, y=y, mode='markers', hoverinfo='skip'))
Activity
wkwg commentedon Nov 4, 2021
+1
Just ran into this issue today. I found out:
go.Scattergl(x=x, y=y, mode='markers', hoverinfo='skip'))wilecoyote2015 commentedon Nov 17, 2023
This problem still persists for me.
iDevGeek commentedon Jun 5, 2025
Still issue in v3.x.x.