【问题标题】:Ignore unavailable data in Python pie chart plot忽略 Python 饼图中不可用的数据
【发布时间】:2020-06-15 23:17:16
【问题描述】:

我正在使用以下数据框绘制饼图。 数据加起来为 0.932,小于 1。 因此,饼图产生了“四个”饼图。

我想要一个饼图,图表中没有不可用的 (1-0.932) 饼图。 该图应该有 3 个饼图,分别为 0.62、0.31 和 0.02。 怎么做?请提出建议。

import pandas as pd
df99 = pd.DataFrame({
    'Data': ['A', 'B', 'C'],
    'Perc': [0.62, 0.31, 0.02]})
df99.plot.pie(y='Perc')

【问题讨论】:

  • 需要通过将“Perc”列除以其总和来进行归一化:即 sumthing like df99.assign(normed_perc=(df99['Perc'] / df99['Perc'].sum())).plot.pie(y='normed_perc')

标签: python pandas matplotlib


【解决方案1】:

当和小于 1 时,pie 绘制一个不完整的圆。因此,您可以将数字相乘,例如乘以 100。pie 将计算总和为 100 的百分比;除并与原始总和相乘即可返回原始数字。 Pandas plot.pie不允许进行大量微调,因此在这种情况下,直接调用 matplotlib 的 pie 可以让事情变得更容易:

import pandas as pd
import matplotlib.pyplot as plt

df99 = pd.DataFrame({
    'Data': ['A', 'B', 'C'],
    'Perc': [0.62, 0.31, 0.02]})
plt.pie(df99['Perc']*100, labels=df99['Data'],
        autopct=lambda p: f"{p*df99['Perc'].sum()/100:.2f}")
plt.show()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-12
    • 1970-01-01
    相关资源
    最近更新 更多