pie()函数概述
pie()函数用于绘制饼图。
pie()的函数签名为matplotlib.pyplot.pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=0, radius=1, counterclock=True, wedgeprops=None, textprops=None, center=0, 0, frame=False, rotatelabels=False, *, normalize=None, data=None)。
pie()函数的参数如下:
x:各个饼块的尺寸。类1维数组结构。explode:每个饼块相对于饼圆半径的偏移距离,取值为小数。类1维数组结构。默认值为None。labels:每个饼块的标签。字符串列表。默认值为None。colors:每个冰块的颜色。类数组结构。**颜色会循环使用。**默认值为None,使用当前色彩循环。autopct:饼块内标签。None或字符串或可调用对象。默认值为None。如果值为格式字符串,标签将被格式化,如果值为函数,将被直接调用。pctdistance:饼块内标签与圆心的距离。浮点数。默认值为0.6,autopct不为None该参数生效。shadow:饼图下是否有阴影。布尔值。默认值为False。labeldistance:饼块外标签与圆心的距离。浮点值或None。默认值为1.1。如果设置为None,标签不会显示,但是图例可以使用标签。startangle:饼块起始角度。浮点数。默认值为0,即从x轴开始。角度逆时针旋转。radius:饼图半径。浮点数。默认值为1.counterclock:角度是否逆时针旋转。布尔值。默认值为True。wedgeprops:饼块属性。字典。默认值为None。具体见matplotlib.patches.Wedge。textprops:文本属性。字典。默认值为None。center:饼图中心坐标。(float,float)浮点数二元组。默认值为(0,0)。frame:是否绘制子图边框。布尔值。默认为False。rotatelabels:饼块外标签是否按饼块角度旋转。布尔值。默认为False。normalize:是否归一化。布尔值或None。默认值为None。True:完全饼图,对x进行归一化,sum(x)==1。False:如果sum(x)<=1,绘制不完全饼图。如果sum(x)>1,抛出ValueError异常。None:如果sum(x)>=1,默认值为True。如果sum(x)<1,默认值为False。- 注意:未来版本(当前版本3.3.3),默认值将改为
True。绘制不完全饼图,需要明确传递normalize=False。
pie()的返回值为三元组。
patches:matplotlib.patches.Wedge对象序列。类型为列表。texts:外标签Text对象列表。类型为列表。autotexts:只有autopct属性不为None才会返回值,饼块内标签Text对象列表。类型为列表。
pie()函数参数演示

import matplotlib.pyplot as plt
plt.rcParams['font.family']='SimHei'
x = [1, 5, 4, 3]
labels = ['a', 'b', 'c', 'd']
explode = [-0.1, 0, 0.1, 0]
colors =['r','b']
# 子图1,显示默认属性情况,为与子图2对比,添加了外标签
plt.subplot(241)
plt.pie(x, labels=labels)
plt.title('默认属性')
# 子图2,演示外标签相关属性
plt.subplot(242)
plt.pie(x, labels=labels,labeldistance=1.2,rotatelabels=True)
plt.title('外标签相关属性')
# 子图3,演示内标签相关属性,起始角度设置为30
plt.subplot(243)
plt.pie(x, autopct='%1.1f%%',pctdistance=0.4,startangle=30)
plt.title('内标签相关属性')
# 子图4,演示饼块分离、颜色循环、阴影
plt.subplot(244)
plt.pie(x, explode=explode, colors=colors,shadow=True)
plt.title('饼块分离、颜色循环')
# 子图5,演示修改饼图半径、角度顺时针旋转
plt.subplot(245)
plt.pie(x, radius=1.2,counterclock=False)
plt.title('修改半径、顺时针')
# 子图6,演示normalize为默认值None
plt.subplot(246)
x = [0.1, 0.2, 0.2, 0.3]
plt.pie(x)
# normalize为默认值None,这时sum(x)<1,相当于normalize=Fasle
# 运行时会有警告,因为未来版本默认normalize=True
# 建议绘制不完全饼图使用plt.pie(x,normalize=Fasle)
plt.title('normalize=None')
# 子图7,演示normalize为True,这时虽然sum(x)<1,但是会强制归一化,绘制完全饼图
plt.subplot(247)
x = [0.1, 0.2, 0.2, 0.3]
plt.pie(x,normalize=True)
plt.title('normalize=True')
# 子图8,演示normalize为False,这时sum(x)<1,绘制不完全饼图
plt.subplot(248)
x = [0.1, 0.2, 0.2, 0.3]
plt.pie(x,normalize=False)
plt.title('normalize=False')
plt.show()
pie()函数返回值演示

输出:
([<matplotlib.patches.Wedge object at 0x0000015D7C3B29B0>,
<matplotlib.patches.Wedge object at 0x0000015D7C3B2EB8>,
<matplotlib.patches.Wedge object at 0x0000015D7E3C8390>,
<matplotlib.patches.Wedge object at 0x0000015D7E3C8828>],
[Text(1.068035996798755, 0.26324724033138536, 'a'),
Text(-0.13259039153561533, 1.0919797562557798, 'b'),
Text(-0.8233617520668647, -0.7294350041185184, 'c'),
Text(0.8233619228034269, -0.7294348113967717, 'd')])
([<matplotlib.patches.Wedge object at 0x0000015D7E40D240>,
<matplotlib.patches.Wedge object at 0x0000015D7E40D9B0>,
<matplotlib.patches.Wedge object at 0x0000015D7E41B0F0>,
<matplotlib.patches.Wedge object at 0x0000015D7E41B7F0>],
[Text(1.068035996798755, 0.26324724033138536, ''),
Text(-0.13259039153561533, 1.0919797562557798, ''),
Text(-0.8233617520668647, -0.7294350041185184, ''),
Text(0.8233619228034269, -0.7294348113967717, '')],
[Text(0.38837672610863816, 0.09572626921141286, '7.7%'),
Text(-0.04821468783113285, 0.3970835477293745, '38.5%'),
Text(-0.2994042734788599, -0.26524909240673394, '30.8%'),
Text(0.2994043355648825, -0.26524902232609876, '23.1%')])
import matplotlib.pyplot as plt
from pprint import pprint
plt.rcParams['font.family'] = 'SimHei'
x = [1, 5, 4, 3]
labels = ['a', 'b', 'c', 'd']
# 子图1,仅有外标签,无内标签,返回值为2元组,即:
# patches:饼块对象matplotlib.patches.Wedge列表。
# texts: 饼块外标签文本对象列表。
plt.subplot(121)
a = plt.pie(x, labels=labels)
pprint(a)
plt.title('无内标签返回值为2元组')
# 子图2,仅有内标签,无外标签,返回值为3元组,即:
# patches:饼块对象matplotlib.patches.Wedge列表。
# texts: 饼块外标签文本对象列表,由于没有设置外标签,文本均为空。
# autotexts:饼块内标签文本对象列表。
plt.subplot(122)
b = plt.pie(x, autopct='%1.1f%%', pctdistance=0.4)
plt.title('有内标签返回值为3元组')
pprint(b)
plt.show()
本文详细介绍了matplotlib.pyplot.pie()函数的使用,包括参数含义、示例代码以及返回值解析。通过多个子图展示了不同参数设置对饼图的影响,如外标签、内标签、饼块颜色、半径、角度等。同时,还探讨了normalize参数对绘制完全和不完全饼图的影响。
1579

被折叠的 条评论
为什么被折叠?



