第一章 使用 matplotlib 绘制折线图
第二章 使用 matplotlib 绘制条形图
第三章 使用 matplotlib 绘制直方图
第四章 使用 matplotlib 绘制散点图
第五章 使用 matplotlib 绘制饼图
第六章 使用 matplotlib 绘制热力图
第七章 使用 matplotlib 绘制堆叠条形图
第八章 使用 matplotlib 在一个画布内绘制多个图
上一章我们讲述了散点图的绘制,本章我们来讲述饼图的绘制。
饼图,或称饼状图,是一个将圆形划分为几个扇形的统计图表。在饼图中,每个扇形的弧长大小,表示该种类占总体的比例,这些扇形合在一起刚好是一个完整的圆形。
饼图最显著的功能在于表现”占比“。习惯上,人们也用饼图来比较扇形的大小,从而获得对数据的认知。但是,由于人类对“角度”的感知力并不如“长度”,在需要准确的表达数值(尤其是当数值接近、或数值很多)时,饼图常常不能胜任,建议用柱状图代替。
使用时,须确认各个扇形的数据加起来等于 100%;避免扇区超过 5 个,尽量让图表简洁明了。
下面我们通过例子来看饼图的绘制,示例代码如下:
import matplotlib.pyplot as plt
plt.style.use('fivethirtyeight')
languages = ['JavaScript', 'HTML/CSS', 'SQL', 'Python', 'Java']
popularity = [59219, 55466, 47544, 36443, 35917]
plt.pie(popularity)
plt.tight_layout()
plt.show()
在上面的代码中,我们只要将一个列表传入到 pie 函数中,便可以绘制一个饼图。代码执行后得到的图形如下图所示:
从上面的饼图中我们不知道每个扇形所代表的数据,下面来为每个扇形打上标签。
import matplotlib.pyplot as plt
plt.style.use('fivethirtyeight')
languages = ['JavaScript', 'HTML/CSS', 'SQL', 'Python', 'Java']
popularity = [59219, 55466, 47544, 36443, 35917]
plt.pie(popularity, labels=languages)
plt.tight_layout()
plt.show()
为了给每个扇形打上标签,我们只需要传入参数 labels 即可。代码执行后得到的图形如下图所示:
除了给每个扇形打上标签之外,我们还可以把每个扇形的占比标在图形上,示例代码如下:
import matplotlib.pyplot as plt
plt.style.use('fivethirtyeight')
languages = ['JavaScript', 'HTML/CSS', 'SQL', 'Python', 'Java']
popularity = [59219, 55466, 47544, 36443, 35917]
plt.pie(popularity, labels=languages, autopct='%1.1f%%')
plt.tight_layout()
plt.show()
上面的代码中,我们通过参数 autopct 为每个扇形标上占比。代码执行后得到的图形如下图所示:
上图中扇形从大到小排列的方向是逆时针的,一般情况下,我们比较习惯顺时针的方向,下面我们通过参数来设置成顺时针方向,示例代码如下:
import matplotlib.pyplot as plt
plt.style.use('fivethirtyeight')
languages = ['JavaScript', 'HTML/CSS', 'SQL', 'Python', 'Java']
popularity = [59219, 55466, 47544, 36443, 35917]
plt.pie(popularity, labels=languages, autopct='%1.1f%%', counterclock=False, startangle=90)
plt.title('top5 编程语言占比')
plt.tight_layout()
plt.show()
上面代码中,通过设置参数 counterclock 为 False,使得方向改为顺时针方向,通过设置参数 startangle 为 90,将最大扇形放在 12 点钟方向。代码执行后得到的图形如下图所示:
有时候,为了强调某一个扇形,我们会让这个扇形脱离整个圆形。示例代码如下:
import matplotlib.pyplot as plt
plt.style.use('fivethirtyeight')
languages = ['JavaScript', 'HTML/CSS', 'SQL', 'Python', 'Java']
popularity = [59219, 55466, 47544, 36443, 35917]
plt.pie(popularity, labels=languages, autopct='%1.1f%%',
counterclock=False, startangle=90,explode=[0,0,0.1,0,0])
plt.title('top5 编程语言占比')
plt.tight_layout()
plt.show()
在上面的代码中,我们通过设置参数 explode 来强调 SQL 这个扇形,要强调那个扇形,就把相应的值设置成非 0。代码执行后得到的图形如下图所示:
本章我们讲述了饼图的绘制以及饼图的适用场景和不适用场景。
上一章 使用 matplotlib 绘制散点图