我关注的是详细的下拉菜单教程here,我对其进行了一些修改,以使第一个下拉菜单项在加载时被选中,并提供了更具可重现性的数据集:
import pandas as pd
import numpy as np
from plotly.offline import plot
import plotly.graph_objs as go
df = pd.DataFrame(np.random.randint(0,100,size=(72, 2)), columns=['High','Low'])
df['time'] = pd.date_range('4/1/2015', periods=72, freq='H')
trace_high = go.Scatter(x=list(df.index),
y=list(df.High),
name='High',
line=dict(color='#33CFA5'))
trace_high_avg = go.Scatter(x=list(df.index),
y=[df.High.mean()]*len(df.index),
name='High Average',
visible=False,
line=dict(color='#33CFA5', dash='dash'))
trace_low = go.Scatter(x=list(df.index),
y=list(df.Low),
name='Low',
line=dict(color='#F06A6A'))
trace_low_avg = go.Scatter(x=list(df.index),
y=[df.Low.mean()]*len(df.index),
name='Low Average',
visible=False,
line=dict(color='#F06A6A', dash='dash'))
data = [trace_high, trace_high_avg, trace_low, trace_low_avg]
high_annotations=[dict(x='2016-03-01',
y=df.High.mean(),
xref='x', yref='y',
text='High Average:<br>'+str(df.High.mean()),
ax=0, ay=-40),
dict(x=df.High.idxmax(),
y=df.High.max(),
xref='x', yref='y',
text='High Max:<br>'+str(df.High.max()),
ax=0, ay=-40)]
low_annotations=[dict(x='2015-05-01',
y=df.Low.mean(),
xref='x', yref='y',
text='Low Average:<br>'+str(df.Low.mean()),
ax=0, ay=40),
dict(x=df.High.idxmin(),
y=df.Low.min(),
xref='x', yref='y',
text='Low Min:<br>'+str(df.Low.min()),
ax=0, ay=40)]
updatemenus = list([
dict(active=0,
buttons=list([
dict(label = 'High',
method = 'update',
args = [{'visible': [True, True, False, False]},
{'title': 'Yahoo High',
'annotations': high_annotations}]),
dict(label = 'Low',
method = 'update',
args = [{'visible': [False, False, True, True]},
{'title': 'Yahoo Low',
'annotations': low_annotations}]),
dict(label = 'Both',
method = 'update',
args = [{'visible': [True, True, True, True]},
{'title': 'Yahoo',
'annotations': high_annotations+low_annotations}]),
dict(label = 'Reset',
method = 'update',
args = [{'visible': [True, False, True, False]},
{'title': 'Yahoo',
'annotations': []}])
]),
)
])
layout = dict(title='Yahoo', showlegend=False,
updatemenus=updatemenus)
fig = dict(data=data, layout=layout)
plot(fig, filename='update_dropdown')
在上面的代码中,下拉菜单在几套不同的绘图之间进行选择。但是,您还会注意到,即使在下拉菜单“高”中选择了第一项,在初始加载时,两组线都存在。如果再次选择“高”或“低”,则它将仅正确显示一行。
是否有一种容易地强制绘图在负载时仅显示单行(以与最初选择的下拉菜单相匹配)而不默认显示为两行的情况?