python

您所在的位置:网站首页 origin饼图百分比和实际不符 python

python

2024-06-01 10:16| 来源: 网络整理| 查看: 265

我有一个饼图,绘制了从 CSV 文件中提取的值。当前显示的值的比例以百分比显示“autopct='%1.1f%%'”。有没有一种方法可以显示每个切片在数据集中表示的实际值。

#Pie for Life Expectancy in Boroughs import pandas as pd import matplotlib import matplotlib.pyplot as plt # show plots inline %matplotlib inline # use ggplot style matplotlib.style.use('ggplot') #read data lifeEx = pd.read_csv('LEpie.csv') #Select columns df = pd.DataFrame() df['LB'] = lifeEx[['Regions']] df['LifeEx'] = lifeEx[['MinLF']] colorz = ['#B5DF00','#AD1FFF', '#BF1B00','#5FB1FF','#FFC93F'] exploda = (0, 0, 0, 0.1, 0) #plotting plt.pie(df['LifeEx'], labels=df['LB'], colors=colorz, autopct='%1.1f%%', explode = exploda, shadow = True,startangle=90) #labeling plt.title('Min Life expectancy across London Regions', fontsize=12)

最佳答案

使用autopct关键字

正如我们所知,显示的百分比乘以所有实际值的总和必须是实际值,我们可以将其定义为一个函数,并使用 将此函数提供给 plt.pie autopct 关键字。

import matplotlib.pyplot as plt import numpy labels = 'Frogs', 'Hogs', 'Dogs' sizes = numpy.array([5860, 677, 3200]) colors = ['yellowgreen', 'gold', 'lightskyblue'] def absolute_value(val): a = numpy.round(val/100.*sizes.sum(), 0) return a plt.pie(sizes, labels=labels, colors=colors, autopct=absolute_value, shadow=True) plt.axis('equal') plt.show()

必须小心,因为计算涉及一些错误,因此提供的值仅精确到某些小数位。

更高级的可能是下面的函数,它通过比较计算值和输入数组之间的差异来尝试从输入数组中取回原始值。这种方法不存在不准确的问题,但依赖于彼此足够不同的输入值。

def absolute_value2(val): a = sizes[ numpy.abs(sizes - val/100.*sizes.sum()).argmin() ] return a 创建饼图后更改文本

另一种选择是先用百分比值绘制饼图,然后再替换它们。为此,可以存储由 plt.pie() 返回的 autopct 标签,并循环遍历它们以用原始数组中的值替换文本。注意,plt.pie() 仅返回三个参数,最后一个是感兴趣的标签,当提供 autopct 关键字时,我们在这里将其设置为空字符串。

labels = 'Frogs', 'Hogs', 'Dogs' sizes = numpy.array([5860, 677, 3200]) colors = ['yellowgreen', 'gold', 'lightskyblue'] p, tx, autotexts = plt.pie(sizes, labels=labels, colors=colors, autopct="", shadow=True) for i, a in enumerate(autotexts): a.set_text("{}".format(sizes[i])) plt.axis('equal') plt.show()

关于python - 如何在 matplotlib 饼图中显示实际值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41088236/



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3