Quantcast
Channel: Recent Questions - Stack Overflow
Viewing all articles
Browse latest Browse all 16330

Multiple time series, with horizontal scroll and toggle on/off

$
0
0

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()

Viewing all articles
Browse latest Browse all 16330

Latest Images

Trending Articles



Latest Images

<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>