matplotlib之pyplot模块之饼图(pie():基础参数,返回值)

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.6autopct不为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()的返回值为三元组。

  • patchesmatplotlib.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()

猜你喜欢

转载自blog.csdn.net/mighty13/article/details/113898922