Python matplotlib绘制饼图全解析:属性、样式与实战案例
本文详细介绍Python中matplotlib.pyplot模块绘制饼图的完整流程与核心属性。涵盖从基础数据准备到调用pie()方法的关键步骤,深入解析colors、labels、explode、autopct等参数用法。通过操作系统市场占比案例,演示如何设置颜色、百分比显示、突出特定扇区及调整半径。此外,还讲解了添加图例、创建嵌套镂空饼图的高级技巧,帮助开发者快速掌握高质量饼图的实现方法。
前言
在Python的数据可视化库matplotlib中,pyplot子模块提供了丰富的绘图接口。例如,使用plot()函数可以绘制折线图,而bar()函数则用于生成柱状图,这些是基础且常用的图表类型。
除了上述图表,matplotlib.pyplot还支持绘制饼图,这是一种直观展示各部分占总体比例的图形。官方文档中提供了大量关于饼图的示例,展示了其多样化的应用场景。

本文将系统讲解利用matplotlib绘制饼图的各项属性配置,并通过实际案例演示如何生成美观且信息丰富的饼图,让我们开始学习吧。
1. 饼图基础概述
什么是饼图?
- 饼图的核心功能是将各项数据的大小与总项和的比例关系在一个圆形区域内进行可视化展示。
- 通过不同扇区的大小差异,饼图能够清晰地反映出各项数据在整体中的占比情况。
- 在饼图中,相同颜色或样式的标记通常组成一个数据系列,便于区分不同的数据组。
- 根据视觉效果和展示需求,饼图可细分为三维饼图、复合饼图以及分离饼图等多种类型。
饼图的常用场景
- 饼图适用于需要直观展示各个部分构成比例的场景,帮助用户快速理解数据结构。
- 它常用于反映单一维度下各项指标占总体的占比情况,如市场份额、预算分配等。
- 需要注意的是,饼图更适合展示大体占比关系,当对数据精度要求极高时,建议结合其他图表使用。
绘制饼图的基本步骤
- 首先,导入matplotlib.pyplot模块,这是进行绘图操作的基础。
- 其次,准备数据。可以使用numpy或pandas等库对原始数据进行整理和计算,确保数据格式符合绘图要求。
- 接着,调用pyplot.pie()函数来绘制饼图,传入准备好的数据列表。
- 最后,调用axis方法调整x轴和y轴的间距相等,确保饼图显示为正圆,避免变形。
案例展示
在本节案例中,我们将使用饼图来分析不同操作系统的市场占比情况,以具体数据为例进行演示。
案例数据准备:使用random.randint函数生成5个随机数值,模拟不同操作系统的用户数量或市场份额数据。
import numpy as np
size = np.random.randint(0,100,5)
绘制饼图:将生成的数据传入pie函数,并设置相应的标签和标题,生成初始饼图。
import matplotlib.pyplot as plt\
plt.pie(size,labels=["Windows","MAC","Linux","Android","Other"])
plt.title("手机系统占比分析")
plt.show()

2. 饼图核心属性详解
设置饼图的颜色
控制饼图颜色的关键字是colors。
该参数的可取值包括None(使用默认颜色)或者一个颜色列表,列表长度需与数据项一致。
颜色列表可以由以下几种形式组成:
- 表示颜色的英文单词,例如红色可以使用"red"表示。
- 表示颜色单词的简称,如红色为"r",黄色为"y"等。
- RGB格式,包括十六进制格式如"#88c999",或者(r,g,b)元组形式,提供更精确的颜色控制。
设置标签
控制饼图标签的关键字是labels。
默认值为None,即不显示标签。
使用时需要传入一个列表形式的值,列表中的每个元素对应饼图中的一个扇区标签。
设置突出部分
控制扇区是否突出的关键字是explode。
默认值为None,即所有扇区紧贴中心。
需要传入一个列表数据,列表长度与数据项一致。
如果设置值后,其指定的部分会向外突出显示,用于强调特定数据项。
设置填入百分比数值
控制百分比显示的关键字是autopct。
默认值为None,即不显示百分比数值。
可选择值形式包括:
- 格式字符串,如'%1.1f%%',用于指定百分比的显示格式(保留一位小数)。
- 函数,可以调用自定义函数内容,实现更复杂的百分比显示逻辑。
饼图旋转
从x轴逆时针旋转的角度由startangle参数控制,默认为0,类型为浮点数。
指定扇区排列方向(顺时针或逆时针)由counterclock参数控制,默认为True(逆时针),类型为布尔值。
设置阴影
控制是否显示阴影的关键字是shadow。
默认值为False,即不显示阴影。
当设置为True时,会在饼图下方绘制出阴影效果,增加立体感。
结合第一节的案例,我们可以添加一些属性,例如显示占比数值、指定颜色以及突出MAC系统的占比,以增强图表的可读性。
plt.pie(size,labels=["Windows","MAC","Linux","Android","Other"],
autopct="%1.1f%%",
explode=[0,0.1,0,0,0],
colors=("r","blue","#88c999",(1,1,0),"0.5"))

3. 调整饼图的大小
在实际制作饼图时,可能会遇到需要改变饼图大小的需求,此时可以借助饼图属性关键字radius来实现。
radius参数用于设置饼图的半径大小,数值越大,饼图占据的空间越大。
除此之外,我们还可以使用textprops参数来控制显示标签的大小,例如调整字体大小或样式,使标签更清晰易读。
plt.pie(size,labels=["Windows","MAC","Linux","Android","Other"],autopct="%1.1f%%",
explode=[0,0.1,0,0,0],
colors=("r","blue","#88c999",(1,1,0),"0.5"),radius=0.5,textprops={'size':"smaller"})

4. 添加图例
在饼图中显示各项占比情况时,有时需要在图表旁边添加一组图例说明,以便更直观地解释数据含义。
- pyplot.pie()方法会返回patchee.Wedge列表、文本列表等数据,这些数据可用于后续操作。
- 可以使用pyplot.legend()方法,传入wedge元素和指定的labels标签,生成图例。
- 同时,可以通过legend()方法的bbox_to_anchor参数来设置图例的位置,确保图例不会遮挡主要数据。
La = ["Windows","MAC","Linux","Android","Other"]
def f(pct,n):
num = int(round(pct*np.sum(n)))
return "{:.1f}%\n{:d}w".format(pct,num)
wedges ,text,autotexts =plt.pie(size,autopct=lambda pct: f(pct,size),
colors=("r","blue","#88c999",(1,1,0),"0.5"),textprops=dict(color='w'))
plt.legend(wedges,La,loc="right",bbox_to_anchor=(1,0,0.3,1))

5. 镂空饼图
在饼图中,我们有时候也用到嵌套镂空的饼图,这种图表可以展示多层数据关系。
- 嵌套可以通过多次调用pyplot.pie()方法实现,每次调用绘制不同层级的数据。
- 镂空可以借助pyplot.pie()属性wedgeprops来进行设置,控制扇区的宽度和边缘样式。
- 具体设置如wedgeprops={"width":0.3,"edgecolor":'w'},其中width控制内环半径,edgecolor设置边缘颜色。
cmap = plt.get_cmap("tab20c")
plt.pie(size,
colors=("r","blue","#88c999",(1,1,0),"0.5"),textprops=dict(color='w'),wedgeprops=dict(width=0.3,edgecolor='w'))
plt.pie(size,
colors= cmap(np.arange(3)*5),radius=0.7,wedgeprops=dict(width=0.3,edgecolor='w'),textprops={'size':"smaller"})

总结
本期,对matplotlib.pyplot 绘制饼图pie()相关属性的学习。在绘制饼图时,我们会根据实际需求改变饼图的大小,嵌套饼图、添加柱状图等图形辅助查看
以上是本期内容,欢迎大佬们点赞评论,下期见~
以上就是Python利用matplotlib实现饼图绘制的详细内容,更多关于Python matplotlib 绘制饼图的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













