【Matplotlib】python绘制饼图

绘制饼图

代码

import matplotlib.pyplot as plt
# 设置中文字体
plt.rcParams['font.sans-serif'] = ['SimHei']
# 设置图片大小和分辨率
plt.figure(figsize=(9, 6), dpi=100)
x = [217, 743, 426]
labels = ['走路', '自行车', '公交车']
explode = [0, 0.05, 0]

_, _, autotexts = plt.pie(x=x, labels=labels, shadow=1,
                          autopct='%.lf%%', explode=explode)
# 将饼图字体改成白色
for autotext in autotexts:
    autotext.set_color('white')

plt.title('3种去学校的方式')
plt.show()

运行结果

在这里插入图片描述

代码分析

绘制饼图用到的方法为pie(),它的原型如下。

pie(
        x, explode=None, labels=None, colors=None, autopct=None,
        pctdistance=0.6, shadow=False, labeldistance=1.1,
        startangle=None, radius=None, counterclock=True,
        wedgeprops=None, textprops=None, center=(0, 0), frame=False,
        rotatelabels=False, *, data=None)

重要参数

  • x:传入的数据。该数据类似于数组,其中每个元素代表每个饼块的比例。如果所有元素之和sum(x) > 1,则每个元素都会被除以sum(x),也就是进行归一化处理。
  • explode:默认情况下每个饼块都是彼此相连的,有时为了突出某一个饼块,我们可以将其与其他部分分开(即饼图爆裂),自定义一个类似于数组的数据来规定每个饼块的爆裂距离。
  • labels:默认情况下x没有标签。如果想定义标签,需要启用labels参数,它通常和数据x的维度相同。
  • labeldistance:标签位置,如果定义标签,则默认位于1.1倍半径处。
  • autopct:默认情况下不显示每个饼块的百分比标注,如果启用autopct,则可以自定义每个饼块的百分比属性,如保留几位小数,格式类似于print()语句的format定义。
  • pctdistance:每个饼块都要显示一个百分数字符串,该参数将指明在何处显示这个字符串。通过该参数可以自定义一个比值,它表示沿着半径偏离圆心的比例,默认为0.6,表示在距离圆心60%半径处显示百分数。
  • shadow:布尔值,自定义饼图是否有阴影属性。

观察图8-24所示的饼图,可以发现,“自行车”这个类别和其他两类没有紧密相连,而是稍微分开了一点,这是因为使用了pie()方法中的explode参数,该参数是一个列表,列表中的第二个元素值为0.05(见代码08行),它对标x(代码第06行定义)中的第二个元素743(即自行车)。这个“0.05”表示当前饼块相对于其他饼块的偏移距离,但并非具体的值(如多少cm),而是相对于半径的比值。假设这个饼图的半径为5cm,那么实际偏移的量为5cm×0.05=0.25cm。这一功能使我们绘制出来的饼图更加美观,且可突出显示关键数据。
关于autopat参数,我们这里保留了一位有效数字(代码第11行)。此外,为了让饼图中的文字更加醒目,我们将饼图的字体修改为白色(代码第10~14行)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZhShy23

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值