社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

Crossin的编程教室 • 5 年前 • 767 次点击  


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

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

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

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

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

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

首先安装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()

设置标题、标签和图例

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

如标题和图例分别通过参数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']

用华夫饼图来表白

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

一行代码绘制爱心图

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"

设置好需要的参数

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

绘图

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

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/115687