备注
Go to the end 下载完整的示例代码.
饼图#
绘制饼图的演示.
此示例说明了 pie 的各种参数.
标签切片#
绘制动物的饼图并标记切片.要添加标签,请将标签列表传递给 labels 参数
import matplotlib.pyplot as plt
labels = 'Frogs', 'Hogs', 'Dogs', 'Logs'
sizes = [15, 30, 45, 10]
fig, ax = plt.subplots()
ax.pie(sizes, labels=labels)

饼图的每个切片都是一个 patches.Wedge 对象;因此,除了此处显示的自定义之外,还可以使用 wedgeprops 参数自定义每个楔形,如 嵌套饼图 中所示.
自动标记切片#
将函数或格式字符串传递给 autopct 以标记切片.
fig, ax = plt.subplots()
ax.pie(sizes, labels=labels, autopct='%1.1f%%')

默认情况下,标签值从切片的百分比大小获得.
颜色切片#
将颜色列表传递给 colors 以设置每个切片的颜色.
fig, ax = plt.subplots()
ax.pie(sizes, labels=labels,
colors=['olivedrab', 'rosybrown', 'gray', 'saddlebrown'])

阴影线切片#
将阴影线模式列表传递给 hatch 以设置每个切片的模式.
fig, ax = plt.subplots()
ax.pie(sizes, labels=labels, hatch=['**O', 'oO', 'O.O', '.||.'])

交换标签和 autopct 文本位置#
使用 labeldistance 和 pctdistance 参数分别定位标签和 autopct 文本.
fig, ax = plt.subplots()
ax.pie(sizes, labels=labels, autopct='%1.1f%%',
pctdistance=1.25, labeldistance=.6)

labeldistance 和 pctdistance 是半径的比率;因此,它们在饼图中心为 0 ,在饼图边缘为 1 之间变化,并且可以设置为大于 1 以将文本放置在饼图之外.
爆炸,阴影和旋转切片#
除了基本的饼图之外,此演示还显示了一些可选功能:
使用 explode 偏移切片
使用 shadow 添加阴影
使用 startangle 自定义起始角度
此示例对切片进行排序,分离(爆炸)并旋转它们.
explode = (0, 0.1, 0, 0) # only "explode" the 2nd slice (i.e. 'Hogs')
fig, ax = plt.subplots()
ax.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%',
shadow=True, startangle=90)
plt.show()

默认的 startangle 为 0,这将使第一个切片("Frogs")从正 x 轴开始.此示例设置 startangle = 90 ,使所有切片逆时针旋转 90 度,并且 frog 切片从正 y 轴开始.
控制大小#
通过更改 radius 参数,并经常更改文本大小以获得更好的视觉效果,可以缩放饼图.
fig, ax = plt.subplots()
ax.pie(sizes, labels=labels, autopct='%.0f%%',
textprops={'size': 'smaller'}, radius=0.5)
plt.show()

修改阴影#
shadow 参数可以选择接受一个字典,其中包含传递给 Shadow patch 的参数.这可用于修改默认阴影.
fig, ax = plt.subplots()
ax.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%',
shadow={'ox': -0.04, 'edgecolor': 'none', 'shade': 0.9}, startangle=90)
plt.show()

参考
以下函数,方法,类和模块的用法在本例中显示:
matplotlib.axes.Axes.pie/matplotlib.pyplot.pie
脚本的总运行时间:(0 分 1.477 秒)