大家好,我是云朵君,今天给大家介绍一个比较有意思的图形——华夫饼图
。
没错,就是跟华夫饼一样的,由多个方块组成的图形。
华夫饼图(Waffle Chart),或称为直角饼图,可以直观的描绘百分比完成比例情况。与传统的饼图相比较,华夫饼图表达的百分比更清晰和准确,它的每一个格子代表 1%
。
华夫饼图的典型应用是比较同类型指标完成比例。
虽然matplotlib并没有提供原生的华夫饼图接口,需要安装第三方包pywaffle
,配合matplotlib绘制华夫饼图,但matplotlib与pywaffle完美融合,绘制图形也非常方便,只需一行代码即可完成精美图表绘制。
首先安装pywaffle:
代码语言:javascript复制pip install pywaffle
第一张华夫饼图
pywaffle的应用非常简单。首先将Waffle类传递给matplotlib.pyplot.figure
函数的FigureClass参数,然后通过设置matplotlib.pyplot.figure函数的参数即可完成华夫饼图的定制。
import matplotlib.pyplot as plt
from pywaffle import Waffle
fig = plt.figure(
FigureClass=Waffle,
rows=100,
columns=39, # 行或列都可以省略
values=[100,100,100,90])
fig.show()
设置标题、标签和图例
通过设置对应参数,即可以对目标图进行自定义。
如标题和图例分别通过参数title
和legend
,均是接受字典中的matplotlib参数。标签参数为labels
,如果未指定,values
则将使用键作为标签。
设置颜色
颜色是影响一个图形外观的重要因素之一。参数colors
接受列表或元组中的颜色。其长度必须等于values
。如
values=[30, 16, 4]
colors=["#232066", "#983D3D", "#DCB732"]
更改色块颜色的另一种方法是将matplotlib中的Colormap传递给参数 cmap_name
,该参数可批量设置颜色。包括 Pastel1,Pastel2,Paired,Accent,Dark2,Set1,Set2,Set3,tab10,tab20,tab20b,tab20c。
如cmap_name="tab10"
比较有意思的是下面的字符和图标这两个参数。
设置字符
通过将一个字符列表或元组传递给参数characters
,每个类别的类别字符可以具有不同的字符,但长度必须与values
相同。
fig = plt.figure(
FigureClass=Waffle,
rows=5,
values=[30, 16, 4],
colors=["#4C8CB5", "#B7CBD7", "#C0C0C0"],
characters='⬤',
font_size=24)
设置图标
带有图标的华夫饼图也被称为象形图。
使用参数icons
设置图表形状,通过将图标名称的列表或元组传递给参数icons
,支持使用Font Awesome图标(https://fontawesome.com/)。
部分例子
使用icon_size
设置图标的大小。
使用icon_style
设置图表样式可以是Solid, Regular 和 Brands。
使用icon_legend= True
设置图例,图例中的符号将是图标,否则,它将是一个颜色条。
icons=['volleyball-ball',
'basketball-ball','futbol']
表白开始
下面就通过改变图标、颜色、值的大小,并通过一行代码绘制一个 ❤️ 形的华夫饼图。
一行代码绘制爱心图
代码语言:javascript复制fig = plt.figure(figsize=(12, 4),dpi=150,
FigureClass=Waffle,
rows=10,
values=[14,3,6,5,4,6,3,6,3,6,4,6,5,6,5,6,5,5,6,3,13],
colors=["white"] [ "orange", "white"]*10,
icons=['basketball-ball']*21,
font_size=20)
绘制 "I LOVE U"
设置好需要的参数
代码语言:javascript复制from pywaffle import Waffle
background_color = "#fafafa"
# 华夫饼格子数
values=[2, 6, 24, 6, 2, 10, 22, 8, 2, 8, 2, 18,
22, 6, 4, 6, 22, 16, 4, 4, 4, 4, 4, 4, 4,
6, 4, 8, 4, 8, 4, 8, 4, 10, 22, 2, 2, 2,
4, 2, 2, 2, 4, 2, 2, 2, 2, 10, 22, 8, 2, 8, 20]
# 颜色
colors=['red'] ['lightgray', 'red']*26
# 图标
icons=['heartbeat'] ['bomb','heartbeat']*26
绘图
代码语言:javascript复制fig = plt.figure(figsize=(12, 4),
dpi=150, #设置画布大小
# 设置背景颜色
facecolor=background_color,
# 指定华夫饼图
FigureClass=Waffle,
# 设置行数
rows=10,
# 设置值
values=values,
# 设置颜色
colors=colors,
# 设置图标
icons=icons)
当然,你还可以将不同的字母更换成不同的图标及颜色,显得更加绚丽,让她更心动。
OK,今天的分享到此结束。
今天,你表白了吗?
更多详情可以参见官网:https://pywaffle.readthedocs.io/en/latest/