局部整体(八)利用python绘制华夫饼图
华夫饼图( Waffle chart)简介
华夫饼图是饼图的一种变体,一般由100个格子组成,一个格子代表1%。用不同颜色的格子区分不同的分类数据,以展示各部分在整体中的占比。尤其擅长展示部分在整体中的占比关系。
快速绘制
-
基于pywaffle
import matplotlib.pyplot as plt from pywaffle import Waffle # 自定义数据 data = { 'Kevin': 10, 'Joseph': 7, 'Yan': 8} # 基础华夫饼图 plt.figure( FigureClass=Waffle, rows=15, columns=20, values=data, legend={ 'loc': 'upper left', 'bbox_to_anchor': (1.05, 1)}, ) plt.show()
定制多样化的华夫饼图
自定义华夫饼图一般是结合使用场景对相关参数进行修改,并辅以其他的绘图知识。参数信息可以通过官网进行查看,其他的绘图知识则更多来源于实战经验,大家不妨将接下来的绘图作为一种学习经验,以便于日后总结。
更多用法可参考Basic Examples and Formats of Values
-
修改参数
PyWaffle支持通过Font Awesome使用图标进行绘图,要搜索Font Awesome中可用的图标名称可访问 https://fontawesome.com/search
import pandas as pd import matplotlib.pyplot as plt from pywaffle import Waffle import numpy as np # 自定义数据 data = { 'Category 1': 15, 'Category 2': 30, 'Category 3': 10, 'Category 4': 25, 'Category 5': 20} # 计算方块数量 total_icons = sum(data.values()) # 自定义颜色图标 fig = plt.figure( FigureClass=Waffle, rows=10, values=data, icons='star', # 修改icon colors=["#FF5733", "#FFC300", "#900C3F", "#FF5733", "#C70039"], # 自定义颜色 legend={ 'loc': 'upper left', 'bbox_to_anchor': (1, 1)}, icon_legend=True, figsize=(8, 4), font_size = 18 ) plt.show()
-
自定义图例
# 自定义数据 data = { 'Cat': 30, 'Dog': 16, 'Goat': 40} # 计算比例 repartition = [f"{ k} ({ int(v / sum(data.values()) * 100)}%)" for k, v in data.items()] # 自定义图例 fig = plt.figure( FigureClass=Waffle, rows=10, columns=15, values=data, title={ 'label': 'A graph with the distribution in the legend', 'loc': 'left', 'fontdict': { 'fontsize': 12 } }, labels=repartition, legend={ 'loc': 'lower left', 'bbox_to_anchor': (0, -0.15), 'ncol':
-