如链接中所述
post
:
'y' = [values_1]
哪里
values_1
它本身就是一个列表。
所以,我们需要
'y': [df[col]]
对于每一个
col
在里面
df.iloc[:, 1:]
.对于
label
价值使用
科尔
本身。还要确保只为您的
第一
列,因为这将为我们提供第一次选择的结果。
import plotly.graph_objects as go
fig = go.Figure()
x = df['Quarters']
y = df['526433']
fig.add_traces(go.Scatter(x=x, y=y))
buttons = [{'method': 'update', 'label': col, 'args': [{'y': [df[col]]}]}
for col in df.iloc[:, 1:]]
updatemenus = [{'buttons': buttons,
'direction': 'down',
'showactive': True,}]
fig.update_layout(updatemenus=updatemenus)
fig.show()
输出:
使用的数据
import pandas as pd
import numpy as np
data = {'Quarters': {0: 'Mar-21', 1: 'Jun-21', 2: 'Sep-21', 3: 'Dec-21', 4: 'Mar-22',
5: 'Jun-22', 6: 'Sep-22', 7: 'Dec-22', 8: 'Mar-23', 9: 'Jun-23',
10: 'Sep-23', 11: 'Dec-23', 12: 'Mar-24', 13: 'Jun-24'},
'526433': {0: np.nan, 1: 2.99, 2: 3.77, 3: 4.3, 4: 1.54, 5: 3.35, 6: 2.84,
7: 2.25, 8: 0.25, 9: 0.36, 10: -1.59, 11: -0.19, 12: -2.59, 13: 2.83},
'AARTIIND': {0: np.nan, 1: 4.55, 2: 4.14, 3: 20.01, 4: 5.34, 5: 3.75, 6: 3.42,
7: 3.77, 8: 4.11, 9: 1.93, 10: 2.51, 11: 3.42, 12: 3.64, 13: 3.78},
'METROBRAND': {0: 1.69, 1: np.nan, 2: 1.89, 3: 3.69, 4: 2.49, 5: 3.8, 6: 2.72,
7: 4.22, 8: 2.44, 9: 3.91, 10: 2.92, 11: 3.52, 12: 6.05, 13: 3.4}
}
df = pd.DataFrame(data)