gpt4 book ai didi

python - Plotly:如何使用 updatemenus 更新一个特定的跟踪?

转载 作者:行者123 更新时间:2023-12-05 00:57:58 25 4
gpt4 key购买 nike

这是 Plotly 的后续问题:Plotly: How do the buttons for the update menus really work?

考虑下面的代码片段产生的以下 plotly 图:

剧情:

enter image description here

代码:

# imports
import plotly.graph_objs as go
import pandas as pd
import numpy as np

# data
df1 = pd.DataFrame({'index': ['1','2','3'], 'A': [10,10,12], 'B': [11,11,11]})
df2 = pd.DataFrame({'index': ['1','2','3'], 'A': [10,10,10], 'B': [11,11,12]})

# plotly figure setup
fig=go.Figure()
fig.add_trace(go.Scatter(x=df1['index'], y=df1['A'], mode='lines'))
fig.add_trace(go.Scatter(x=df1['index'], y=df1['B'], mode='lines'))

f=fig.to_dict()
#fig.show()

buttons=list([dict(args=[{'y':[df1['A'],df1['B']]}],

label="df1",
method="restyle"
),
dict(args=[{'y':[df2['A'], df2['B']]}],

label="df2",
method="restyle"
)
])

fig.update_layout(
updatemenus=[
go.layout.Updatemenu(
buttons=buttons,
direction="down",
pad={"r": 10, "t": 10},
showactive=True,
x=-0.25,
xanchor="left",
y=1,
yanchor="top"
),
]
)

fig.show()

在上面的代码段中,我使用按钮和 dict(args=[{'y':[df2['A'], df2[ 'B']]}]。这会为图中指定的 both 轨迹分配新值,如下所示 fig-to_dict:

'data': [{'mode': 'lines',
'x': array(['1', '2', '3'], dtype=object),
'y': array([10, 10, 12], dtype=int64),
'type': 'scatter'},
{'mode': 'lines',
'x': array(['1', '2', '3'], dtype=object),
'y': array([11, 11, 11], dtype=int64),
'type': 'scatter'}]

由于我已将列表 [df2['A'], df2['B']] 分配给 'y',因此我知道我打算在上面的代码片段中更新 'y' 的两个实例。但是在按钮和更新菜单的上下文中,有没有办法我可以指定 which 'y' 来更新(换句话说:什么特定的迹线或线)。如果我只分配一个引用(在本例中为数组或 pandas 数据框),则两条迹线将显示相同的值。所以改变以下部分:

 args=[{'y':[df2['A'], df2['B']]}]

...用这个:

args=[{'y':[df2['A']]}]

... 将在单击 df2 时生成以下图:

enter image description here

我真的很想保持所有未指定的 'y' 和痕迹不变。

感谢您的任何建议!

最佳答案

在您为每个 button 传递给 args 的列表中,您可以在 dict 之后添加一个整数来指示您要更新的跟踪。例如,以下将仅更新第一个跟踪(即 index=0 处的跟踪)

buttons=list([dict(args=[{'y':[df1['A'],df1['B']]}, [0]], # note the `, [0]` here!

label="df1",
method="restyle"
),
dict(args=[{'y':[df2['A'], df2['B']]}, [0], # note the `, [0]` here!

label="df2",
method="restyle"
)
])

关于python - Plotly:如何使用 updatemenus 更新一个特定的跟踪?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59077118/

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