【问题标题】:Display percentages on piecharts python [closed]在饼图python上显示百分比[关闭]
【发布时间】:2021-09-17 17:30:23
【问题描述】:

我有一个 pandas 数据框,它将某些生产线机器的生产力(p = 生产力)描述为它们的活动时间 wt(= 工作时间)和它们应该工作的整个工作班次的比率 tt ( = 总时间)。数据框如下所示:

machines      tt          wt              p
1             7:30:00     4:30:00         0.60
2             7:30:00     3:30:00         0.50
3             6:00:00     5:24:00         0.90
...           ...         ...             ...

机器是字符串
tt 和 wt 是 datetime.time
p 是 float64

我需要在仪表板上显示机器的性能。 Dash 在 plotly 上构建数字,所以我可能不得不使用 plotly 饼图。对于每台机器,我希望有一个饼图来显示该特定机器的生产力。所以每台机器一个馅饼。我还不能发布图片,所以我会给你提供所需解决方案的链接。每台机器的输出应该或多或少像这样

click here to see the image of output needed

更新 在@Rob Raymond 的详尽回答之后,我想知道当我将光标放在蓝色区域(或浅蓝色区域)上时,是否有任何方法可以显示机器处于活动状态(或浅蓝色区域)的时间。你知道如何用破折号来做到这一点吗?

【问题讨论】:

    标签: python dataframe plotly plotly-dash


    【解决方案1】:
    • 您可以使用subplots 为每台机器绘制一个图
    • 您可以在 Pie 上叠加一个 Indicator 来实现您的输出。如果 gauge(半圆形)适合您,那么您只需要使用 Indicator
    import pandas as pd
    import io
    import plotly.graph_objects as go
    from plotly.subplots import make_subplots
    
    df = pd.read_csv(io.StringIO("""machines      tt          wt              p
    m1             7:30:00     4:30:00         0.60
    m2             7:30:00     3:30:00         0.50
    m3             6:00:00     5:24:00         0.90"""),sep="\s+",)
    
    fig = make_subplots(
        rows=1,
        cols=len(df),
        subplot_titles=df["machines"].astype(str),
        specs=[[{"type": "pie"} for i in range(len(df))]],
    )
    for i, p in enumerate(df["p"]):
        fig.add_trace(
            go.Pie(
                values=[1 - p, p],
                hole=0.6,
                showlegend=False,
                textinfo="none",
                hovertext=f"tt:{df.loc[i,'tt']}\twt:{df.loc[i,'wt']}",
                marker={"colors": ["lightblue", "blue"]},
            ),
            row=1,
            col=i + 1,
        )
        fig.add_trace(
            go.Indicator(
                mode="number",
                value=p,
                gauge={"axis": {"visible": False}},
                number={"valueformat": "%", "font":{"size":30}},
            ),
            row=1,
            col=i + 1,
        )
    
    fig
    
    

    【讨论】:

    • 非常感谢,我明白了。更进一步:如果我希望在将光标放在图像上时显示两次,该怎么办。 “两次”是指(1)当我将光标放在蓝色区域时机器正在工作的时间(wt),以及(2)机器不工作的时间(= tt - wt)当我将光标移到浅蓝色区域。有没有可能做这样的事情?
    • 已更新 - 将 hovertext 定义为您想要的任何内容
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多