4

На компьютере с Ubuntu 12.04, когда я что-то строю, я получаю сообщение об ошибке вроде:

/usr/lib/pymodules/python2.7/matplotlib/font_manager.py:1228: UserWarning: findfont: не может соответствовать: family = Bitstream Vera Sans: стиль = нормальный: вариант = нормальный: вес = средний: растянуть = нормальный: размер = X-Large. Возвращение /usr/share/matplotlib/mpl-data/fonts/ttf/cmb10.ttf

который я не могу найти решение онлайн. Следующий код воспроизводит ошибку

import pylab as plt
plt.plot(np.random.random((128)))
plt.title("This should be monospaced")
plt.savefig("/tmp/testfig.pdf")

а также самопроверка matplotlib выдает эту ошибку:

python -c "import matplotlib as m ; m.test(verbosity=1)"

В ~/.matplotlib/matplotlibrc меня есть:

font.family         : monospace
font.style          : normal
font.variant        : normal
font.weight         : medium
font.stretch        : normal
font.size           : 10.0
font.serif          : Palatino, Bitstream Vera Serif, New Century Schoolbook, Century Schoolbook L, Utopia, ITC Bookman, Bookman, Nimbus Roman No9 L, Times New Roman, Times, Charter, serif
font.sans-serif     : Helvetica, Bitstream Vera Sans, sans-serif
font.monospace      : Monaco, Ubuntu Mono Regular, Bitstream Vera Sans Mono, Andale Mono, Nimbus Mono L, Fixed, Terminal, monospace

Некоторые вещи, которые не решают проблему для меня:

  1. Удалите файлы в ~/.matplotlib/ (например, matplotlibrc , fontList.cache , tex.cache/)
  2. Измените свойство font.family в ~/.matplotlib/matplotlibrc
  3. Переустановите matplotlib после очистки apt-get purge

Версии, которые я использую:

  • matplotlib 1.1.1 ~ rc1+git20120423-0ubuntu1
  • Python 2.7.3
  • IPython 0.12.1
  • Ubuntu 12.04

4 ответа4

4

После некоторого возни с пакетами шрифтов, решение для меня было установить следующие пакеты:

libsys-cpu-perl pcf2bdf tex-gyre ttf-bitstream-vera tv-fonts xfonts-traditional

Я не уверен, почему это помогает, поэтому, возможно, кто-то может добавить некоторую справку о том, почему это помогает. Надеюсь, это поможет кому-то еще.

2

Для меня на OSX моя установка Python была в моем домашнем каталоге из-за ограничений администратора, которые вызывали путаницу с расположением шрифтов. Я смог заставить Helvetica работать, выполнив следующие действия: http://blog.olgabotvinnik.com/blog/2012/11/15/2012-11-15-how-to-set-helvetica-as-the-default-sans -serif-шрифты в /

  1. Скачайте и установите Фондю для конвертации Mac-Helvetica в ttf-Helvetica. С помощью homebrew это можно сделать с помощью: brew install fondu .

  2. Найдите Helvetica в вашей системе. Для меня это был /System/Library/Fonts/Helvetica.dfont

  3. Найдите, где matplotlib хранит свои данные. Используйте python import matplotlib; matplotlib.matplotlib_fname() для печати каталога.

  4. Поместите .ttf в: your_matplotlib_dir/matplotlib/mpl-data/fonts/ttf затем sudo fondu -show /System/Library/Fonts/Helvetica.dfont

  5. Отредактируйте ваш файл .matplotlibrc. Скопируйте оригинальный файл .matplotlibrc в личный каталог, чтобы он не перезаписывался при обновлении matplotlib. $ cp your_matplotlib_dir/matplotlib/mpl-data/matplotlibrc ~/.matplotlib/matplotlibrc

  6. Найдите строку: #font.sans-serif : Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif затем раскомментируйте и переместите Helvetica на передний план. font.sans-serif : Helvetica, Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif

2

matplotlib всегда использует свой собственный набор шрифтов, независимо от других шрифтов, установленных в системе. В Ubuntu 12.04 LTS эти шрифты находятся в /usr/share/matplotlib/mpl-data/fonts/ .

При вызове шрифта в вашем коде, который недоступен в этом каталоге, matplotlib сначала попытается использовать Bitstream Vera Sans. Тем не менее, этот шрифт не доступен в .../mpl-data/fonts/ в установках Ubuntu 12.04 LTS. Наконец, matplotlib возвращается к шрифту cmb10.ttf , который доступен.

Установка пакетов системных шрифтов, как предложено выше, не устранит это предупреждение.

Однако можно добавить в rcParams['mathtext.fontset'] = 'cm' чтобы избежать множественных откатов и предупреждений.

В качестве альтернативы, укажите шрифт, который присутствует в /usr/share/matplotlib/mpl-data/fonts/ .

0

Возможно, он не загружает ваш конфигурационный файл matplotlibrc . Убедитесь, что это в нужном месте. В документации перечислены несколько мест, в которых производится поиск. Попробуйте поместить его в одно из описанных мест:

  • текущий рабочий каталог процесса python
  • в ~/.config/matplotlib/matplotlibrc

Последний фактически не работал для меня с Debian 7, но не работает и ~/.matplotlib/matplotlibrc .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .