Hello, I am trying to emulate the behavior of toggling trace visibility with the legend but through a callback that triggers from the value of a dcc.Dropdown.
I’m able to do it with fig.update_traces(visible = True) or fig.update_traces(visible = “legendonly“) and returning the modified figure but interactions are really slow between 1000 and 2000 ms for scatter lines that are less than 40 indexes long.
I do have a fairly large (~10mb) image in the layout. Disabling it, the times reported in the callback graph are in the same range but it feels snappier.
Is there anyway I can speed it up? I’ve looked into layout.legend.uirevision but I’m not sure I understand how to use that if it’s applicable.
@app.callback( dash.dependencies.Output('graph', 'figure'), [dash.dependencies.Input('dropdown', 'value')], [dash.dependencies.State('graph', 'figure') ) def filter_traces(value, figure): for item in figure['data']: if item['name'] not in value and item['showlegend'] == True: item['visible'] = 'legendonly' else: item['visible'] = True figure['layout']['legend']['uirevision']=True return figure
is how I’m currently doing it