Matplotlib 库使用入门5——饼图
- pie() 函数
- 绘制饼图示例
在前面关于 matploblib 的文章中,笔者分别介绍了:
- matplotlib 库的安装与配置,常用套路和绘图组件。
- 画布和绘图域的创建、图素的设置、用 plot 函数绘制线图并设置图例、网格
- 绘制多种柱状图
- 绘制直方图
本篇介绍 matplotlib 绘制饼图的方法。饼图(Pie)用来显示一个数据系列,具体来说,饼状图显示一个数据系列中各项目的占项目总和的百分比。
pie() 函数
Matplotlib 提供了 pie()
-
axes.pie(x, explode, labels, colors, autopct, pctdistance=0.6, shadow=False, labeldistance=1.1, stratangle=0, radius=1, counterclock=True, wedgeprops, textprops, center=(0, 0), frame=False, rotatelabels=False, *, normalize=True)
x:数据序列。每一块饼的权重为x/sum(x);如果sum(x)<=1,则x已经代表了每一块饼的权重,此时并不会除以sum(x)。饼图从x轴开始,逆时针绘制。
explode:如果不是None,则它给出了每个饼的径向偏移量(径向偏移除以半径)。
labels:给出了每一块饼的标签(字符串)。
colors:给出了每一块饼的颜色。
autopct:可以是一个pct参数格式化字符串,pct为饼的比重(自动提供)。
pctdistance:pct数值标签的径向距离(相对于半径)。
shadow:若为True,则饼图带阴影。
labeldistance:控制饼的字符串标签径向距离(相对于半径)。
startangle:控制第一块饼与 x 轴的夹角。
radius:控制饼图半径,默认为 1。
counterclock:控制饼的绘制顺序,若为True,则按逆时针,否则按顺时针。
wedgeprops:一个字典,控制每一块饼的某些属性(如线型)。
textprops:一个字典,控制饼的文字的一些属性。
center:一个二元的元组,指定饼图的中心。
frame:布尔值,控制是否绘制axes frame。
rotatelabels:布尔值,控制饼的字符串标签文字方向,若为True则为径向。
normalize:布尔值,控制饼图是否正规,若为False,则数据序列之和不能大于1。
绘制饼图示例
示例:
import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure('Pie example1', figsize=(8.5, 6.5))
y = np.array([45, 25, 25, 15])
ax1 = fig.add_subplot(221)
ax1.pie(y) # 将数据序列 y 绘制成饼图,按照默认方式
ax1.set_title('Pie 1')
ax2 = fig.add_subplot(222)
ax2.pie(y, labels=['A','B','C','D'], frame=True, # 绘制饼图,添加标签和框
colors=["#d5695d", "#5d8ca8", "#65a479", "#a564c9"]) # 设置饼图颜色
ax2.set_title('Pie 2')
ax3 = fig.add_subplot(223)
ax3.pie(y, labels=['A','B','C','D'],
colors=['c','g','b','r'],
explode=(0.1, 0.1, 0.05, 0.05), # 给每个饼设置偏移
autopct='%.2f%%', rotatelabels=True) # 添加百分比标签,文字标签设置为径向
ax3.set_title('Pie 3')
ax4 = fig.add_subplot(224)
ax4.pie([0.3, 0.27, 0.15, 0.13, 0.075], shadow=True, # 饼图开启阴影
labels=['Apple', 'Orange', 'Banana', 'Pear', 'Peach'],
autopct='%.2f%%', radius=1.3, # 设置饼图半径
normalize=False) # 非正规饼图,数据序列之和小于1,有缺口
ax4.set_title('Pie 4')
plt.show()
上述代码绘制图像如下:
以上。