Это звучит как простая проблема, но я не нахожу эффективного решения для изменения шрифта (а не размера шрифта) в графике, созданном с помощью matplotlib в python.
Я нашел несколько руководств по изменению шрифта по умолчанию для matplotlib путем изменения некоторых файлов в папках, где matplotlib хранит свой шрифт по умолчанию - см. Это сообщение в блоге - но я ищу менее радикальное решение, так как я хотел бы использовать более одного шрифт в моем сюжете (текст, метка, метка оси и т. д.).
python
fonts
matplotlib
SirC
источник
источник
hfont = {'fontname':'Helvetica'} plt.annotate('Country ', (0.17,0.95), xytext=None, xycoords='figure fraction',size=28, color='red', horizontalalignment = 'left', **hfont)
и ошибка/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/font_manager.py:1236: UserWarning: findfont: Font family ['Helvetica'] not found. Falling back to Bitstream Vera Sans (prop.get_family(), self.defaultFamily[fontext]))
вместо этого, если я использую в качестве имени шрифта Comic Sans MS, как в вашем примере, код работает.Ответы:
Скажем, вы хотите Comic Sans для названия и Helvetica для метки x.
csfont = {'fontname':'Comic Sans MS'} hfont = {'fontname':'Helvetica'} plt.title('title',**csfont) plt.xlabel('xlabel', **hfont) plt.show()
источник
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/font_manager.py:1236: UserWarning: findfont: Font family ['Helvetica'] not found. Falling back to Bitstream Vera Sans (prop.get_family(), self.defaultFamily[fontext]))
. Как установить Helvetica в набор шрифтов, известных matplotlib?Вы также можете использовать
rcParams
для глобального изменения семейства шрифтов.import matplotlib.pyplot as plt plt.rcParams["font.family"] = "cursive" # This will change to your computer's default cursive font
Список аргументов семейства шрифтов matplotlib находится здесь .
источник
Я предпочитаю нанимать:
from matplotlib import rc #rc('font',**{'family':'sans-serif','sans-serif':['Helvetica']}) rc('font',**{'family':'serif','serif':['Times']}) rc('text', usetex=True)
источник
import pylab as plb plb.rcParams['font.size'] = 12
или же
import matplotlib.pyplot as mpl mpl.rcParams['font.size'] = 12
источник
Шрифт Helvetica не входит в состав Windows, поэтому для его использования необходимо загрузить его в виде файла .ttf. Затем вы можете сослаться на него matplotlib следующим образом (замените "crm10.ttf" своим файлом):
import os from matplotlib import font_manager as fm, rcParams import matplotlib.pyplot as plt fig, ax = plt.subplots() fpath = os.path.join(rcParams["datapath"], "fonts/ttf/cmr10.ttf") prop = fm.FontProperties(fname=fpath) fname = os.path.split(fpath)[1] ax.set_title('This is a special font: {}'.format(fname), fontproperties=prop) ax.set_xlabel('This is the default font') plt.show()
print(fpath)
покажет вам, где вы должны поместить .ttf.Вы можете увидеть результат здесь: https://matplotlib.org/gallery/api/font_file.html
источник
fontproperties
глобально, чтобы вам не приходилось указывать его при каждом вызове, напримерset_title()
,set_xlabel()
и т. Д.?