栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在matplotlib饼图中显示实际值(Python)?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在matplotlib饼图中显示实际值(Python)?

使用
autopct
关键字

我们知道显示的百分比乘以所有实际值的总和必须是实际值,我们可以将其定义为一个函数,并

plt.pie
使用
autopct
关键字将此函数提供给该函数。

import matplotlib.pyplot as pltimport numpylabels = '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 aplt.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

创建饼图后更改文本

另一种选择是先用百分比值绘制饼图,然后再替换它们。为此,可以存储由返回的autopct标签,

plt.pie()
并在其上循环以用原始数组中的值替换文本。注意,提供关键字
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()


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/414525.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号