更新时间:2022-06-13 来源:黑马程序员 浏览量:
今天的Python培训课程,我们介绍一下华夫饼图。华夫饼图亦称为直角饼图,它是饼图的变体,可以直观展示部分与整体的比例。华夫饼图一般由100个方格组成,其中每个方格代表1%,方格不同的颜色代表不同的分类,常见于比较同类型指标完成比例的场景,例如电影上座率、公司业务实际完成率等。
pywaffle是Python中专门绘制华夫饼图的包,它提供了一个继承自Figure的子类Waffle,通过将Waffle类传递给figure()函数的FigureClass参数即可创建华夫饼图。figure()函数中创建华夫饼图的常用参数如下。
.FigureClass:可以是Figure类或Fgiure子类。
.rows:表示华夫饼图的行数。
.columns:表示华夫饼图的列数。
.values:表示数据,可以接收数组或字典。若values参数接收一个字典,则将字典的键作为华夫饼如的图例项。
.colors:表示每个分类数据的颜色列表。
.vertical:表示是否按垂直方向绘制华夫饼图,默认为False。
.title:表示标题,可以接收一个字典,其中字典的键为title()函数的关键字参数。
.legend:表示图例,可以接收一个字典,其中字典的键为legend()函数的关键字参数。
例如,创建一个10行10列的华夫饼图,具体代码如下。
plt.figure( FigureClass=Waffle, # 指定画布类为Waffle rows=10, # 行数设为10 columns=10, # 列数设为10 values=[45, 55] # 一组数据 )
假设某影院于周六上映了电影《少年的你》,并统计了1号观影厅的上座率。下面结合matplotlib和pywaffle绘制一个说明1号厅上座率的华夫饼图,示例代码如下。
import matplotlib.pyplot as plt from pywaffle import Waffle plt.rcParams['font.sans-serif'] = 'SimHei' plt.rcParams['axes.unicode_minus'] = False # 绘制华夫饼图 plt.figure(FigureClass=Waffle, rows=10, columns=10, values=[95, 5], vertical=True, colors=['#20B2AA', '#D3D3D3'], title={ 'label' : '电影《少年的你》上座率'}, legend={'loc': 'upper right', 'labels': ['占座', '空座']} ) plt.show()
运行程序,效果如图8-22所示。
图8-22 电影《少年的你》上座率的华夫饼图
图8-22中华夫饼图总共由100个方格组成,其中绿色的方格代表上座的比例,灰色的方格代表空座的比例。由图8-22可知,电影《少年的你》的上座率为95%。