Matplotlib 库使用入门5——饼图

  • pie() 函数
  • 绘制饼图示例


在前面关于 matploblib 的文章中,笔者分别介绍了:

本篇介绍 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()

上述代码绘制图像如下:

数据可视化饼图代码 数据可视化饼状图_matplotlib

以上。