Подтвердить что ты не робот

Как использовать (случайный) шрифт *.otf или *.ttf в matplotlib?

Как я могу использовать шрифт любого типа в моей библиотеке шрифтов на моем компьютере (например, *otf или *ttf) во всех моих matplotlib цифрах?

4b9b3361

Ответ 1

См. пример здесь: http://matplotlib.sourceforge.net/examples/api/font_file.html

В общем, вы бы сделали что-то вроде этого, если хотите использовать определенный файл .ttf. (Имейте в виду, что указание на конкретный файл шрифта, как правило, плохая идея!)

import matplotlib.font_manager as fm
import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.plot(range(10))

prop = fm.FontProperties(fname='/usr/share/fonts/truetype/groovygh.ttf')
ax.set_title('This is some random font', fontproperties=prop, size=32)

plt.show()

enter image description here

Обычно вы просто указываете на имя шрифта, и пусть matplotlib беспокоится о поиске конкретного файла. Например.

import matplotlib.pyplot as plt

plt.plot(range(10))
plt.title('This is some random font', family='GroovyGhosties', size=32)

plt.show()

Если вы хотите, чтобы matplotlib всегда использовал конкретный шрифт, настройте свой .matplotlibrc файл. (font.family - это то, что вы хотите установить. Обратите внимание, что вы должны указать имя шрифта, а не путь к определенному файлу .ttf.)

В качестве примера выполните это динамически (т.е. не настроив конкретный файл .matplotlibrc):

import matplotlib as mpl
mpl.rcParams['font.family'] = 'GroovyGhosties'

import matplotlib.pyplot as plt

plt.plot(range(10))
plt.title('Everything is crazy!!!', size=32)
plt.show()

enter image description here

Ответ 2

В * nix вы можете использовать все ваши системные шрифты, включив бэкэнд matplotlib fontconfig.

Однако matplotlib на самом деле не разговаривает с библиотеками fontconfig, он эмулирует его поведение, запустив утилиты fontconfig cli.

Таким образом, nuking matplotlib fontconfig cache, так что он обнаруживает, что новые шрифты могут быть спасателями (существование этого кеша является прямым доказательством отсутствия полной интеграции fontconfig).