假设我有6组数据:
X = [i for i in range(100)]
Y1 = [2*i for i in range(100)]
Y2 = [3*i for i in range(100)]
Y3 = [4*i for i in range(100)]
Y4 = [5*i for i in range(100)]
Y5 = [6*i for i in range(100)]
Y6 = [7*i for i in range(100)]
使用此处的示例(https://plot.ly/python/custom-buttons/),我可以创建按钮,这些按钮将允许我在单个图上显示这六组数据之间进行切换。但是,我想将数据分为多个子图集,并具有在子图集之间切换的按钮。
例如,我想要两组子图,每个子图由两个子图组成(因此,总共4个地块,两组,每个2个子图)。在第一组子图中,我想将Y1和Y2放在第一个图上,并将Y3放在第二个图上。在第二组子图中,我想在第一个子图上放置Y4,在第二个子图上放置Y5和Y6。然后,我想要两个按钮,这些按钮可让我在第一组子图(Y1 / Y2和Y3)和第二组子图(Y4,Y5 / Y6)之间切换。
另一个示例是拥有两组子图,分别由2个子图和3个子图组成(而不是每组2个子图)。在第一组子图中(2个子图中),将Y1放在第一组上,将Y2放在第二组上。在第二组子图中(3个子图中),将Y3和Y4放在第一个子图上,将Y5放在第二个子图上,将Y6放在第三个子图上。这两个按钮将在第一组和第二组子图之间更新。
最终目标是要有一个基础,即拥有任意数量的子图集,并为每个子图集分配任意数量的子图(不相同),然后将任意数量的迹线任意分配给每组子图中的每个子图。 ,然后使用按钮在子图集之间切换。
如果没有按钮,是否可以通过菜单来完成?另外,是否存在一个菜单小部件,该菜单小部件允许使用向上/向下按钮浏览子图集?
可以在这里找到另一种类似的参考文献(但没有一个能解决这个特定问题):Python Plotly - Multiple dropdown plots, each of which have subplots
下面是我一直在尝试开发的代码(当然,它是不完整的,但是可以作为解决方案的基础。)
非常感谢您的答复!
import pandas as pd
import numpy as np
import plotly.offline as offline
import plotly.graph_objs as go
from plotly.offline import init_notebook_mode, iplot, plot
from plotly import tools
init_notebook_mode(connected=True)
# 6 sets of data
X = [i for i in range(100)]
Y1 = [2*i for i in range(100)]
Y2 = [3*i for i in range(100)]
Y3 = [4*i for i in range(100)]
Y4 = [5*i for i in range(100)]
Y5 = [6*i for i in range(100)]
Y6 = [7*i for i in range(100)]
labels = ["One", "Two"]
# 2 subplots
fig = tools.make_subplots(rows=1, cols=2)
trace1 = go.Scatter(
x=X,
y=Y1,
showlegend=False
)
trace2 = go.Scatter(
x=X,
y=Y2,
showlegend=False
)
trace3 = go.Scatter(
x=X,
y=Y3,
showlegend=False
)
trace4 = go.Scatter(
x=X,
y=Y4,
showlegend=False
)
trace5 = go.Scatter(
x=X,
y=Y5,
showlegend=False
)
trace6 = go.Scatter(
x=X,
y=Y6,
showlegend=False
)
data = [trace1,trace2]
updatemenus = list([
dict(type="buttons",
active=-1,
buttons = list([
dict(label = 'first',
method = 'update',
args = [{'visible':[True,False]},
{'title': 'first'}]),
dict(label = 'second',
method = 'update',
args = [{'visible':[False,True]},
{'title': 'second'}])
])
)])
layout = dict(title = 'test', showlegend=False,
updatemenus=updatemenus)
fig = dict(data=data,layout=layout)
offline.plot(fig, filename='tmp.html')
答案 0 :(得分:0)
请检查文档(this link)
在文档中,他们用来附加的示例是使用fig.append_trace()
,第一个参数是已经生成的跟踪,第二个和第三个是子图的位置。
fig = tools.make_subplots(rows=1, cols=2)
fig.append_trace(trace1, 1, 1)
fig.append_trace(trace2, 1, 2)