繁体   English   中英

为 Plotly 创建下拉菜单

[英]Creating a dropdown menu for Plotly

我有一张如下所示的表格:

日期 类型 值_1 价值_2
1/1 一个 1 10
1/2 一个 5 3
1/3 一个 6 12
1/1 4 7
1/2 10 5
1/3 6 15
1/1 C 16 8
1/2 C 8 11
1/3 C 1 5

我想为类型 A、B 和 C 绘制一个交互式图表,以便“日期”列位于 x 轴上,而“值_1”和“值_2”都位于一个图中的 y 轴上。

我目前编写的代码如下; 我已经使用 Plotly 到 plot A 型的 value_1 和 value_2 在同一个 plot 上,日期为 x 轴。

# Change Type (A, B, and C)
type_graph = 'A'

# Plot Graph
fig = px.line(df[df['type'] == type_graph ],
              x='date', y=['value_1', 'value_2')

fig.update_layout(
    title="Value graph",
    xaxis_title="Date",
    yaxis_title="Value_1 vs Value_2",
    legend_title="Value Type",
)

fig.show()

我想添加下拉菜单,以便可以更改为查看类型 B 和 C。 因此,我无需更改“type_graph”,只需单击下拉菜单到 select 我想查看的“类型”。 此外,我希望将 value_1 和 value_2 绘制在同一张图上。 因此,我只会选择“类型”A、B 或 C 来相应地查看 value_1 和 value_2。

通过将图形的显示/隐藏与类型相关联来实现所需的按钮行为。 因此,根据您的数据,绘制 value_1 图表和 value_2 图表并将它们分组。 设置要显示的初始图形并确保它们都显示出来。 接下来,在列表中指定按钮是否应显示或隐藏为按钮的 function。 在这种情况下,有两个图,所以会有两个隐藏。 请参阅此处的参考资料。

import plotly.graph_objects as go

fig = go.Figure()

for t in df['type'].unique():
    dff = df[df['type'] == t]
    fig.add_trace(go.Scatter(
        x=dff.date,
        y=dff['value_1'],
        name='value_1',
        legendgroup=t,
        legendgrouptitle=dict(text=t),
        visible=True,
    ))
    fig.add_trace(go.Scatter(
        x=dff.date,
        y=dff['value_2'],
        name='value_2',
        legendgroup=t,
        legendgrouptitle=dict(text=t),
        visible=True,
    ))

fig.update_layout(
    updatemenus=[
        dict(
            active=0,
            buttons=list([
                dict(label="All",
                     method="update",
                     args=[{"visible": [True, True, True, True, True, True]}]),
                dict(label="Type_A",
                     method="update",
                     args=[{"visible": [True, True, False, False, False, False]}]),
                dict(label="Type_B",
                     method="update",
                     args=[{"visible": [False, False, True, True, False, False]}]),
                dict(label="Type_C",
                     method="update",
                     args=[{"visible": [False, False, False, False, True, True]}]),
            ]),
        )
    ])

fig.update_layout(
    autosize=True,
    height=400,
    title="Value graph",
    xaxis_title="Date",
    yaxis_title="Value_1 vs Value_2",
    #legend_title="Value Type",
)
fig.show()

在此处输入图像描述

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM