【问题标题】:Add filters dropdown to line plot based on a pandas dataframe根据熊猫数据框将过滤器下拉列表添加到线图
【发布时间】:2022-01-16 20:43:18
【问题描述】:

 我有数据框并希望在活动、已注册 和em>富有成效的。状态是按月从交易中统计的。

small dataframe(图片示例)

我想在 x 轴上放置 ,在 y 轴上是 Active、Registered、Productive。我尝试实现此代码:

df1 = pd.read_csv('company.csv')
fig = px.line(df1, x = 'month', y = ['registered', 'active', 'productive'], markers = True)
fig.show()

输出:plotly

我还想在下拉列表中按公司进行过滤,并从数据框列公司获取值,因此当我选择代表其价值状态(活跃、注册、生产)的确定公司时。

如何将下拉菜单设置为 plotly 或任何其他方式?

【问题讨论】:

  • 你能把你的数据框 sn-p 作为文本而不是图像发布吗

标签: python pandas dataframe plotly


【解决方案1】:
  • 已模拟您的数据框
  • 由此我了解到每个公司都是一组线。已创建包含所有组的图
  • 最后构建一个下拉菜单,让您可以进行过滤。这也可以从图例中完成
import plotly.graph_objects as go
import plotly.express as px
import pandas as pd
import numpy as np

c = ["Sircio", "Nippon", "Toshiba", "Budget Group", "Northern Factory", "Cobot Corp"]
df1 = pd.concat(
    [
        pd.DataFrame(
            {
                "company": np.tile(c, 8),
                "month": np.repeat(
                    pd.date_range("1-Feb-21", freq="MS", periods=8), len(c)
                ),
            }
        ),
        pd.DataFrame(
            np.random.randint(1, 8, [len(c) * 8, 3]),
            columns=["active", "registered", "productive"],
        ),
    ],
    axis=1,
)

fig = go.Figure()
for c in df1["company"].unique():
    fig_tmp = px.line(
        df1.loc[df1["company"].eq(c)],
        x="month",
        y=["registered", "active", "productive"],
        markers=True,
    ).update_traces(legendgroup=c, legendgrouptitle_text=c)

    fig.add_traces(fig_tmp.data)

fig.update_layout(fig_tmp.layout)

fig.update_layout(
    updatemenus=[
        {
            "buttons": [
                {
                    "label": c,
                    "method": "restyle",
                    "args": ["visible", [t.legendgroup == c for t in fig.data]],
                }
                for c in df1["company"].unique()
            ]
        }
    ]
)

【讨论】:

    猜你喜欢
    • 2021-12-01
    • 2020-08-08
    • 2020-05-05
    • 2014-12-27
    • 2019-12-09
    • 2019-05-21
    • 2017-12-15
    • 2016-09-08
    • 1970-01-01
    相关资源
    最近更新 更多