华夫饼图你见过吗?一行Python代码就能画出来

共 4025字,需浏览 9分钟

 ·

2021-06-19 10:57


大家好,欢迎来到 Crossin的编程教室 !

今天给大家介绍一个比较有意思的图形——华夫饼图

没错,就是跟华夫饼一样的,由多个方块组成的图形。

华夫饼图(Waffle Chart),或称为直角饼图,可以直观的描绘百分比完成比例情况。与传统的饼图相比较,华夫饼图表达的百分比更清晰和准确,它的每一个格子代表  1%

华夫饼图的典型应用是比较同类型指标完成比例。

虽然matplotlib并没有提供原生的华夫饼图接口,需要安装第三方包pywaffle,配合matplotlib绘制华夫饼图,但matplotlibpywaffle完美融合,绘制图形也非常方便,只需一行代码即可完成精美图表绘制。

首先安装pywaffle

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()

设置标题、标签和图例

通过设置对应参数,即可以对目标图进行自定义。

如标题和图例分别通过参数titlelegend,均是接受字典中的matplotlib参数。标签参数为labels,如果未指定,values则将使用键作为标签。

设置颜色

颜色是影响一个图形外观的重要因素之一。参数colors接受列表或元组中的颜色。其长度必须等于values。如

values=[30164]
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=[30164],
    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']

用华夫饼图来表白

下面我们来点不一样的:通过改变图标、颜色、值的大小,绘制一个 ❤️ 形的华夫饼图。

一行代码绘制爱心图

fig = plt.figure(figsize=(124),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"

设置好需要的参数

from pywaffle import Waffle
background_color = "#fafafa"
# 华夫饼格子数
values=[2624621022828218,
        2264622164444444,
        648484841022222
        422242222102282820]
# 颜色
colors=['red'] + ['lightgray''red']*26
# 图标
icons=['heartbeat']+['bomb','heartbeat']*26

绘图

fig = plt.figure(figsize=(124),
    dpi=150#设置画布大小
    # 设置背景颜色
    facecolor=background_color,
    # 指定华夫饼图
    FigureClass=Waffle,
    # 设置行数
    rows=10,
    # 设置值
    values=values,
    # 设置颜色
    colors=colors,
    # 设置图标
    icons=icons)

当然,你还可以将不同的字母更换成不同的图标及颜色,显得更加绚丽,让她更心动。

OK,今天的分享到此结束。

程序员的专属浪漫表白技能又 +1 

更多详情可以参见官网:

https://pywaffle.readthedocs.io/en/latest/

如果文章对你有帮助,欢迎转发/点赞/收藏~

作者:云朵君

来源:数据STUDIO


_往期文章推荐_

Python程序员的花式表白




如需了解付费精品课程教学答疑服务
请在Crossin的编程教室内回复: 666

浏览 29
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报