Как изменить имя шрифта легенды в matplotlib

Я хотел бы отобразить шрифт Times New Roman в легенде сюжета matplotlib. Я изменил все остальные метки галочек/метки осей/заголовки на Times New Roman и просмотрел документацию, но смог найти только то, как изменить размер шрифта в легенде, используя аргумент prop в pyplot.legend()


Конечно, сразу после публикации я нашел ответ. Решение для тех, у кого такая же проблема:

import matplotlib as mpl  
mpl.rc('font',family='Times New Roman')

person Stu    schedule 21.02.2014    source источник
comment
добавьте свой ответ в качестве ответа, чтобы его можно было принять и убрать из очереди вопросов без ответов. Добро пожаловать в StackOverflow!   -  person dax    schedule 21.02.2014


Ответы (3)


Это не отображалось в результатах Google, поэтому я опубликую это как ответ. Параметры rc для шрифта можно использовать для установки одного шрифта по умолчанию.

Решение для тех, у кого такая же проблема:

import matplotlib as mpl
mpl.rc('font',family='Times New Roman')
person Greg.S    schedule 07.03.2014

Приведенное решение .rc изменяет шрифт по умолчанию для всех рисунков.

Вот решение для этого, когда вы не хотите менять все шрифты, а только свойства шрифта легенды этого конкретного графика (легенда, принадлежащая конкретному объекту axis):

L = ax.legend()
plt.setp(L.texts, family='Consolas')

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

введите описание изображения здесь

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

person Floris    schedule 11.12.2016
comment
хорошо, за исключением того, что Consolas, похоже, не поставляется со стандартной установкой или не имеет семейства шрифтов. 'monospace' у меня работает - person Dima Lituiev; 10.08.2017
comment
@DimaLituiev - Consolas — это стандартный моноширинный шрифт на Mac. Я полагаю, у вас есть машина с Windows? В любом случае - это было задумано как руководство, а не рецепт... - person Floris; 10.08.2017
comment
На моем Mac 10.10 open -a /Applications/Font\ Book.app показывает 9 моноширинных шрифтов, но только Courier Courier New и monospace работают в Matplotlib 2.2.3. См. также font_manager. - person denis; 18.01.2019

Я думаю, что это лучший способ.

import matplotlib.font_manager as fm

## your font directory 
font_path = '/Users/frhyme/Library/Fonts/BMDOHYEON_otf.otf'

## font_name 
font_name = fm.FontProperties(fname=font_path).get_name()

plt.legend(prop={'family':font_name, 'size':20})
person frhyme    schedule 07.08.2018