📜  在Python中使用 pyWaffle 生成华夫饼图(1)

📅  最后修改于: 2023-12-03 15:23:26.184000             🧑  作者: Mango

在Python中使用 pyWaffle 生成华夫饼图

简介

pyWaffle 是一个基于 matplotlib 的 Python 可视化库,可以用来生成华夫饼图(Waffle Charts),即一种类似饼图的图表,但是使用正方形代替圆形,并把图表分成若干个小正方形。华夫饼图可以用于呈现数据占比的可视化,视觉上感受更加直观和醒目。

使用 pyWaffle 可以非常方便地生成华夫饼图,同时支持对图表颜色、比例和标签的自定义调整。pyWaffle 还支持更复杂的布局和图表,例如嵌套的华夫饼图和带图片的华夫饼图等。

安装

使用 pip 安装 pyWaffle:

pip install pywaffle
用法

生成基本的华夫饼图:

from pywaffle import Waffle
import matplotlib.pyplot as plt

data = {'A': 30, 'B': 20, 'C': 50}
fig = plt.figure(
    FigureClass=Waffle, 
    rows=5, 
    values=data, 
    legend={'loc': 'upper left', 'bbox_to_anchor': (1.1, 1)}
)
plt.show()

这段代码将会生成一个如下图所示的华夫饼图,其中 A、B、C 分别代表三种数据,30、20、50 分别为它们的占比:

basic_waffle_chart.png

参数解释

Waffle 类包含了各种参数和配置项,下面是一些常用参数的说明:

  • rows 表示华夫饼图的行数,默认值为 10;
  • values 表示数据的字典,其中键表示数据项名称,值表示该项数据在总数中占比的百分数;
  • colors 表示数据项的颜色,可以使用 HTML 颜色名称、颜色代码或 RGB 值;
  • title 表示标题;
  • labels 表示数据项的标签;
  • legend 表示图例,可以使用字典指定 legend 的位置和样式;
  • icons 表示数据项的图标,可以使用 Font Awesome 图标库中的图标;
  • icon_size 表示图标的大小;
  • font_size 表示文本的字体大小;
  • icon_legend 表示图标的图例,设置为 True 可以显示;
  • icon_legend_style 表示图标图例的样式。
自定义颜色和标签

如果需要自定义数据项的颜色和标签,可以使用 colors 和 labels 参数,例如:

data = {'A': 30, 'B': 20, 'C': 50}
colors = ["#232066", "#983D3D", "#DCB732"]
labels = [f"{k} ({v} %)" for k, v in data.items()]

fig = plt.figure(
    FigureClass=Waffle, 
    rows=5, 
    values=data, 
    colors=colors, 
    labels=labels, 
    legend={'loc': 'upper left', 'bbox_to_anchor': (1.1, 1)}
)
plt.show()

这段代码将会生成一个自定义标签和颜色的华夫饼图:

custom_labels_colors.png

细节调整

对于更细节的调整,pyWaffle 也提供了很多选项,例如:

data = {'Python': 45, 'Java': 30, 'JavaScript': 15, 'C#': 5, 'PHP': 5}
colors = ['#52a3cc', '#61b1d1', '#70bed7', '#7fcce2', '#8dd9e8']
icons = ['fas fa-circle', 'fas fa-square', 'fas fa-caret-up', 'fas fa-caret-down', 'fas fa-star']

fig = plt.figure(
    FigureClass=Waffle, 
    rows=10, 
    values=data, 
    icons=icons, 
    icon_size=18, 
    icon_legend=True, 
    icon_legend_style='font-size:12px',
    colors=colors, 
    labels=[f"{k} ({v} %)" for k, v in data.items()], 
    legend={'loc': 'upper left', 'bbox_to_anchor': (1.1, 1)}, 
    font_size=12, 
    title={'label': 'Programming Languages', 'loc': 'left'}
)
plt.show()

这段代码将会生成一个更加复杂的华夫饼图,其中使用了 icons 参数指定了数据项的图标,使用 icon_size 参数指定了图标的大小,使用 icon_legend 参数指定了是否显示图标图例,使用 icon_legend_style 参数指定了图标图例的样式。同时,还使用了 colors 参数、labels 参数、legend 参数、font_size 参数和 title 参数对图表进行了调整。

advanced_waffle_chart.png

总结

pyWaffle 可以方便地生成华夫饼图进行数据可视化。通过自定义参数,可以实现对图表的进一步调整和优化。因此,pyWaffle 是数据可视化最常用的库之一。