I am creating a Python plotly graph to display prices of multiple stocks. I'd like to be able to scroll horizontally and toggle series on/off.
I will also have tens of millions of points.
I found some examples here but there was no toggle:
https://plotly.com/python/time-series/
I found a toggle example (below) but it doesn't contain a horizontal scroll bar and it seems very complicated to add toggle behavior.
Would someone be able to help with a simpler example, say two stock series, with toggling and horizontal scroll? I can then extend it to 3/4/5/6 series.
Plotly: How to toggle traces with a button similar to clicking them in legend?
import numpy as npimport pandas as pdimport plotly.graph_objects as goimport datetimeNPERIODS = 200np.random.seed(123)df = pd.DataFrame(np.random.randint(-10, 12, size=(NPERIODS, 4)), columns=list('ABCD'))datelist = pd.date_range(datetime.datetime(2020, 1, 1).strftime('%Y-%m-%d'), periods=NPERIODS).tolist()df['dates'] = datelist df = df.set_index(['dates'])df.index = pd.to_datetime(df.index)df.iloc[0] = 0df = df.cumsum()# set up multiple tracestraces = []buttons = []for col in df.columns: traces.append(go.Scatter(x=df.index, y=df[col], visible=True, name=col) ) traces.append(go.Scatter(x=df.index, y=df[col]+20, visible=True, name=col) ) buttons.append(dict(method='restyle', label=col, visible=True, args=[{'visible':True},[i for i,x in enumerate(traces) if x.name == col]], args2=[{'visible':'legendonly'},[i for i,x in enumerate(traces) if x.name == col]] ) )allButton = [ dict( method='restyle', label=col, visible=True, args=[{'visible':True}], args2=[{'visible':'legendonly'}] )]# create the layout layout = go.Layout( updatemenus=[ dict( type='buttons', direction='right', x=0.7, y=1.3, showactive=True, buttons=allButton + buttons ) ], title=dict(text='Toggle Traces',x=0.5), showlegend=True)fig = go.Figure(data=traces,layout=layout)# add dropdown menus to the figurefig.show()