任务 5 绘制饼状图
任务目的
这一步会介绍饼状图的概念,饼状图的绘制流程以及相关参数。同时会通过全球手机出货量的示例,展示饼状图的具体绘制流程。
任务步骤
1.饼状图介绍
(1)饼状图概述
饼状图常用于统计学模型,用来显示一个数据系列中各项的大小与各项总和的比例。饼状图中各分块的数值不能有负值,所有分块数据总和为100%。为了保证绘图效果,饼状图中各分块的数值都不应该接近零,同时分块的数目不应过多(如果包含多种数据类别,可以把数据量较小或不重要的数据合并成一个“其他”模块)。
(2)饼状图绘制流程
下方的代码绘制了一个简单的饼状图(需要先执行准备实验环境的操作):
plt.pie([1, 2, 3, 4, 5])运行绘制代码,将会展示一个简单的饼状图:
图中包含了五项数据,占比分别是1:2:3:4:5,在不指定颜色的情况下,系统会自动生成每一项的颜色。
此例中的饼图默认为椭圆形,这会影响数据的观测效果。添加代码plt.axis("equal"),可以修正饼图的展示效果,尝试运行添加修复后的饼图展示代码:
plt.pie([1, 2, 3, 4, 5])
plt.axis("equal") # 修正饼图的展示效果修正后的饼状图效果如下:
接下来将通过一个手机出货量的统计数据,展示饼状图的具体应用。
2.示例——统计2019年全球各品牌的手机出货量
下面的代码将会以饼图的形式展示2019年全球各品牌的手机出货量,复制这些代码到单元格中:
# 1.配置实验环境
%matplotlib inline
import matplotlib.pyplot as plt # 导入pyplot模块
plt.rcParams['font.sans-serif'] = ['SimHei'] # 解决中文乱码问题
plt.rcParams['axes.unicode_minus'] = False # 解决正负号乱码问题
# 2.准备数据
item_name = ["三星", "华为", "苹果", "小米", "OPPO", "VIVO", "其他"] # 品牌名
item_quantity = [296.5, 238.5, 196.2, 124.5, 119.8, 113.7, 396.8] # 各品牌手机全球销量(单位:百万)
# 3.创建画布
plt.figure(figsize=(10, 5), dpi=150)
# 4.绘制饼图
explode = (0, 0, 0, 0, 0, 0, 0.1) # 突出展示【其他】手机部分
plt.pie(item_quantity, labels=item_name, autopct="%.2f%%", explode=explode)
# 5.修饰图像
plt.title("2019年全球各品牌手机出货量", fontsize=16) # 添加标题
plt.axis("equal") # 修正饼图的展示效果
plt.legend()按下【Shift+Enter】运行单元格,将会展示统计结果的饼状图:
相比前面的两个图表,此例中的饼状图主要对以下参数进行了调整:
本例中绘制饼状图的代码如下:
plt.pie(item_quantity, labels=item_name, autopct="%.2f%%", explode=explode)参数item_quantity对应各厂商的手机出货量列表;
参数labels对应厂商的名称列表,此处添加labels参数也是为了方便进行图例展示;
参数autopct可以控制饼图内的百分比设置,设置格式可以参考数据格式化的字符串格式。此例中的值%.2f%表示展示的百分比数据中保留两位小数;
参数explode对应每一分块到中心的距离,其值为元组的形式,值的个数需要与饼图分块数一致。本例中需要突出展示【其他】品牌的手机销量占比,所以定义了同名的explode变量(explode = (0, 0, 0, 0, 0, 0, 0.1)),作为绘制饼图的explode参数值。
为了突出统计图表的标题,本例在添加标题时用到了fontsize参数,此参数的作用是手动定义字体大小(默认值为10):
plt.title("2019年全球各品牌手机出货量", fontsize=16) # 添加标题对于图像中展示的各种文本信息(如标题-title、图例-legend、x轴标签-xlabel、y轴标签-ylabel等),都可以使用fontsize参数手动设置标签的字体大小参数。实际绘制图表前,可以通过help()方法了解绘制图表中各函数的可选参数。
至此关于饼状图的介绍已经完成,下一步将会介绍散点图的绘制。
学员评价