只需一行Python代码,轻松get表白技能

2021-06-24 14:38:48 浏览数 (1)

大家好,我是云朵君,今天给大家介绍一个比较有意思的图形——华夫饼图

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

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

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

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

首先安装pywaffle

代码语言:javascript复制
pip install pywaffle

第一张华夫饼图

pywaffle的应用非常简单。首先将Waffle类传递给matplotlib.pyplot.figure函数的FigureClass参数,然后通过设置matplotlib.pyplot.figure函数的参数即可完成华夫饼图的定制。

代码语言:javascript复制
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。如

代码语言:javascript复制
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相同。

代码语言:javascript复制
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设置图例,图例中的符号将是图标,否则,它将是一个颜色条。

代码语言:javascript复制
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/

0 人点赞