首页 > 解决方案 > 使用 PyWaffle 模块和 FontAwesome 使用 Matplotlib 创建华夫饼图

问题描述

我正在尝试使用 PyWaffle ( https://github.com/ligyxy/PyWaffle ) 来绘制华夫饼图。

我已经安装了模块并且我已经安装了 PyWaffle 使用的 fontawesome 字体 ( https://fontawesome.com/?from=io )。

然后我运行 Git 存储库中提供的以下代码。

data = {'Democratic': 48, 'Republican': 46, 'Libertarian': 3}
fig = plt.figure(
    FigureClass=Waffle, 
    rows=5, 
    values=data, 
    colors=("#232066", "#983D3D", "#DCB732"),
    legend={'loc': 'upper left', 'bbox_to_anchor': (1, 1)},
    icons='child', icon_size=18, 
    icon_legend=True
)

这应该返回以下图: 在此处输入图像描述

相反,我得到以下异常。

FileNotFoundError:[Errno 2] 没有这样的文件或目录:'font/FontAwesome.otf'

我用来安装 FontAwesome 的步骤是在他们的网站上列出的:

  1. 首先我下载了​​压缩文件夹
  2. 接下来,我解压缩了文件夹 在此处输入图像描述
  3. 然后我打开了 在此处输入图像描述 在此处输入图像描述

我右键单击字体并选择:安装。

标签: python-3.xmatplotlibwaffle-chart

解决方案


PyWaffle 似乎在相对于调用脚本(或 python 解释器/jupyter notebook)的位置查找字体文件,而不是在已安装的系统字体中。错误被抛出,因为它找不到它。

字体文件是作为 PyWaffle 包的一部分安装的,它只是看起来位置不正确。font您可以通过在虚拟环境或系统目录中找到该目录site-packages并将其复制到与您的脚本相同的位置来解决此问题。

或者,您可以编辑在您的目录中waffle.py找到的文件以替换此行:pywafflesite-packages

FONTAWESOME_FILE = 'font/FontAwesome.otf'

用这些:

import os
import font
FONTAWESOME_FILE = os.path.join(font.__path__[0], 'FontAwesome.otf')

这有点杂乱无章,并且会在您升级软件包时被覆盖,但它允许您编写的任何脚本使用图标,而不必每次都复制字体文件。

编辑

现在已经修复了这个问题,因此将软件包升级到最新版本就足够了。


推荐阅读