python - 使用下拉菜单将两个不同的数据集绘制成 plotly

标签 python plotly

我有两个不同的数据集 (x0,y0)、(x1,y1)。我需要创建两个图并使用下拉菜单在它们之间进行选择。

我正在使用这段代码:

import plotly
import plotly.graph_objs as go
import random

x0 = [x for x in range(0,20)]
x1 = [x for x in range(5,100)]

y0 = [random.randint(0,20) for x in range(len(x0))]
y1 = [random.randint(0,50) for x in range(len(x1))]

trace1 = go.Scatter(x=x0,y=y0,line=dict(shape='vh'))
trace2 = go.Scatter(x=x1,y=y1,line=dict(shape='vh'))

data = [trace1,trace2]

updatemenus = list([
    dict(active=0,
         buttons=list([   
            dict(label = "4 Aug 1",
                 method = "update",
                 args= [data[0]]),
            dict(label = "4 Aug 2",
                 method = "update",
                 args= [data[1]])]))])


layout = dict(title="Dropdown",
              showlegend=True,
              xaxis=dict(title="Hours"),
              yaxis=dict(title="Number"),
              updatemenus=updatemenus)

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

plotly.offline.plot(fig)

使用这段代码,它将两个数据集绘制到一个区域中,我不想这样做。当我在下拉菜单中选择合适的图表时,它无法加载合适的图表。

最佳答案

问题是您直接将跟踪分配给 args。相反,您应该使用 visible 属性来控制 data 中的哪些跟踪是可见的:

updatemenus = list([
    dict(active=0,
         showactive = True,
         buttons=list([   
            dict(label = "4 Aug 1",
                 method = "update",
                 args = [{"visible": [True, False]}]), # hide trace2
            dict(label = "4 Aug 2",
                 method = "update",
                 args = [{"visible": [False, True]}]) # hide trace1
            ]))])

如果只想在页面加载时显示第一个跟踪,还需要将第二个跟踪的visible 属性显式设置为False:

trace1 = go.Scatter(x=x0,y=y0,line=dict(shape='vh'))
trace2 = go.Scatter(x=x1,y=y1,line=dict(shape='vh'), visible=False)
data = [trace1,trace2]

参见 official Plotly example .

关于python - 使用下拉菜单将两个不同的数据集绘制成 plotly,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55907561/

相关文章:

python - django Rest Framework - 带有自定义 ListView 和 URL 参数的 ViewSet

python - 解析 Api 响应 Django 模块

python - 将 matplotlib 转换为plotly

python - Plotly 不显示轴标签或标题

python - 从 sys.argv 中删除已解析的选项及其值

python - 神经网络结果总是一样的

python - Lego Mindstorm 是否有任何 Ruby 或 Python 解释器?

python - Plotly:如何使用日期时间索引在中心绘制一条线的范围?

python - Plotly:如何在 x 轴上仅绘制月份和日期? (忽略年份)

R仅将颜色填充到下一个y的上值