gpt4 book ai didi

python - 如何使用 Plotly 按钮更改多个数据集的绘图?

转载 作者:行者123 更新时间:2023-12-01 06:54:42 25 4
gpt4 key购买 nike

我有三个独立的股票/指数数据集。我可以用 PlotLy 将它们一一绘制出来。但我想创建一个按钮或下拉菜单,允许我从中切换数据集。

每个数据集如下所示:

            open    high    low     close   volume  
Date
2015-08-06 5146.63 5149.93 5035.41 5056.44 2290950000
2006-08-16 2127.06 2149.54 2120.11 2149.54 2474760000
1995-06-19 909.90 922.09 909.84 922.09 407000000
2009-10-19 2162.41 2180.11 2150.42 2176.32 1970440000
1997-05-23 1377.73 1389.75 1377.73 1389.72 539440000

下面是我的代码。但我不知道将替换“df”的三个数据集放在哪里。我正在考虑类似数据集列表之类的东西,但我不习惯使用 python。我希望得到一些帮助。

我希望按钮或下拉菜单在 df = [msft_data、spy_500、nasdaq] 之间更改

def plot_interactive_stock_data(title):

fig = go.Figure()

fig_high = go.Scatter(x=df.index, y=df['high'], name="high ($)",
line_color='deepskyblue')

fig_low = go.Scatter(x=df.index, y=df['low'], name="low ($)",
line_color='green')

fig_open = go.Scatter(x=df.index, y=df['open'], name="open ($)",
line_color='maroon')

fig_close - go.Scatter(x=df.index, y=df['close'], name="close ($)",
line_color='orange')

fig_volume = go.Scatter(x=df.index, y=df['volume'], name="volume",
line_color='brown')

fig.update_layout(title_text='{}'.format(title),
xaxis_rangeslider_visible=True)


data = [fig_high, fig_low, fig_open, fig_close, fig_volume]

updatemenus = list([
dict(active = -1,
buttons = list([
dict(label = 'Microsoft',
method = 'update',
args = {'visible': [True, False, False]}),

dict(label = 'S&P 500',
method = 'update',
args = {'visible': [False, True, False]}),

dict(label = 'Nasdaq',
method = 'update',
args = {'visible': [False, False, True]})
]),
)
])

layout = dict(title=title, showlegend = False,
updatemenus = updatemenus)

fig = dict(data=data, layout=layout)

plotly.offline.plot(fig, auto_open=False, show_link=False)

最佳答案

我找到了一个并不完美的答案,但代码仍然做了我想要它做的事情。我使用了来自plotly的信息和来自 stackoverflow 。但数据集之间的切换非常慢。因此,如果有人可以向我展示更好的解决方案,我将不胜感激。

下面是绘图函数的代码:

def plot_data(df):    
fig = go.Figure()
fig.add_trace(go.Scatter(
x=df.index,
y=df['open'],
name="Open",
line_color='blueviolet',
opacity=0.8))

fig.add_trace(go.Scatter(
x=df.index,
y=df['high'],
name="High",
line_color='green',
opacity=0.8))

fig.add_trace(go.Scatter(
x=df.index,
y=df['low'],
name="Low",
line_color='red',
opacity=0.8))

fig.add_trace(go.Scatter(
x=df.index,
y=df['close'],
name="Close",
line_color='darkkhaki',
opacity=0.8))

fig.add_trace(go.Scatter(
x=df.index,
y=df['volume'],
name="Volume",
line_color='darkgoldenrod',
opacity=0.8))

fig.add_trace(go.Scatter(
x=df.index,
y=df['dividends'],
name="Dividends",
line_color='brown',
opacity=0.8))

fig.add_trace(go.Scatter(
x=df.index,
y=df['stock_splits'],
name="Stock splits",
line_color='brown',
opacity=0.8))

fig.update_layout(title_text='Explore data',
xaxis_rangeslider_visible=True)
fig.show()

这是下拉菜单的代码:

@interact(control=widgets.Dropdown(
options=["msft_data",
"spy_500",
"nasdaq"
],
description='Datasets'))

def plot_df(control):
plt.figure(figsize = (14,8), linewidth=3, frameon = False)
data = eval(control)
plot_data(data)

你也可以看到我的作品图片:

enter image description here

关于python - 如何使用 Plotly 按钮更改多个数据集的绘图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58867219/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com