python画饼图存在的问题_如何在matplotlib饼图中显示实际值(Python)?

使用autopct关键字

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

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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值