Создание вафельных диаграмм с помощью Matplotlib с использованием модуля PyWaffle и FontAwesome - PullRequest
0 голосов
/ 01 июля 2018

Я пытаюсь использовать PyWaffle (https://github.com/ligyxy/PyWaffle) для построения вафельных диаграмм.

Я установил модуль и установил потрясающие шрифты (https://fontawesome.com/?from=io), которые используются PyWaffle.

Затем я запускаю следующий код из репозитория 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
)

Это должно вернуть следующий график: enter image description here

Вместо этого я получаю следующее исключение.

FileNotFoundError: [Errno 2] Нет такого файла или каталога: 'font / FontAwesome.otf'

Шаги, которые я использовал для установки FontAwesome, перечислены на их сайте:

  1. Сначала я скачал zip-папку
  2. Далее я распаковал папку enter image description here
  3. Потом я его открыл enter image description here enter image description here

Я щелкнул правой кнопкой мыши на шрифтах и ​​выбрал: Установить.

Ваш совет будет оценен

1 Ответ

0 голосов
/ 05 июля 2018

PyWaffle, похоже, ищет файлы шрифтов в расположении относительно вызывающего скрипта (или интерпретатора Python / ноутбука Jupyter), а не в установленных системных шрифтах. Ошибка выдается, потому что она не может найти ее.

Файл шрифта устанавливается как часть пакета PyWaffle, он просто не выглядит в нужном месте. Вы можете обойти это, найдя каталог font в каталоге site-packages вашей виртуальной среды или системы и скопировав его в ту же папку, что и ваш скрипт.

В качестве альтернативы вы можете отредактировать файл waffle.py, находящийся в каталоге pywaffle вашего site-packages, чтобы заменить эту строку:

FONTAWESOME_FILE = 'font/FontAwesome.otf'

С этим:

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

Это что-то вроде клочья, и оно будет перезаписано при обновлении пакета, но оно позволит любым написанным сценариям использовать значки без необходимости каждый раз копировать файл шрифта.

EDIT

Теперь это исправлено, поэтому достаточно обновить пакет до последней версии.

...