在饼图python上显示百分比[关闭]

Posted

技术标签:

【中文标题】在饼图python上显示百分比[关闭]【英文标题】:Display percentages on piecharts python [closed] 【发布时间】: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 的详尽回答之后,我想知道当我将光标放在蓝色区域(或浅蓝色区域)上时,是否有任何方法可以显示机器处于活动状态(或浅蓝色区域)的时间。你知道如何用破折号来做到这一点吗?

【问题讨论】:

【参考方案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 定义为您想要的任何内容

以上是关于在饼图python上显示百分比[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

echarts的饼图,可以在饼图的每个扇形上面显示文字和数据吗

zedgraph空间饼图显示标签遮挡问题

饼图绘制

如何使用jquery Highcharts在饼图中显示值而不是百分比

如何使用jquery Highcharts在饼图中显示值而不是百分比

Echarts,饼图中怎么对数据进行判断