我正在尝试使用 Plotly 使用下拉图在单个图中嵌入多个可选择的图形。我遵循了Plotly 的下拉示例,但它们只显示了如何更改图形特征(如可见或类型),而不是基础数据。在我的情况下,我有一个静态 X 轴并想要更改 Y 值。这是一个可以在 jupyter notebook 中运行的最小工作示例:
import plotly
from plotly import graph_objs as go, offline as po, tools
po.init_notebook_mode()
import numpy as np
import json
x = list(np.linspace(-np.pi, np.pi, 100))
values_1 = list(np.sin(x))
values_2 = list(np.tan(x))
line = go.Scatter(
x=x,
y=values_1
)
updatemenus = [
{
'buttons': [
{
'method': 'restyle',
'label': 'Val 1',
'args': [
{'y': json.dumps(values_1)},
]
},
{
'method': 'restyle',
'label': 'Val 2',
'args': [
{'y': json.dumps(values_2)},
]
}
],
'direction': 'down',
'showactive': True,
}
]
layout = go.Layout(
updatemenus=updatemenus,
)
figure = go.Figure(data=[line], layout=layout)
po.iplot(figure)
然而,虽然该方法似乎像宣传的一般图形属性(如“可见”)一样工作,但当我使用“y”时,它会产生一条直线,其中 y 从 0 变为 len(y),而不是实际数据我给了。这是初始渲染的图像,然后是当我选择 Tan(X) 图的下拉项时会发生什么,然后返回 Sin(X):
如何将多个图形的数据嵌入到一个图形中,以便用户可以选择他们想要查看的图形?