如何在matplotlib中更改图例字体名称

Stu*_*Stu 13 python matplotlib legend legend-properties

我想在matplotlib图的传说中显示Times New Roman中的字体.我已将所有其他刻度标签/轴标签/标题更改为Times New Roman,并搜索了文档,但我只能找到如何使用prop 参数更改图例中的字体大小pyplot.legend()

谢谢

当然,在发布后,我找到了答案.针对同一问题的其他人的解决方案:
import matplotlib as mpl
mpl.rc('font',family='Times New Roman')

小智 11

这没有出现在谷歌搜索结果中,所以我打算将其作为答案发布.字体的rc参数可用于设置单个默认字体.

针对同一问题的其他人的解决方案:

import matplotlib as mpl

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


Flo*_*ris 9

.rc给出的解决方案更改了所有绘图的默认字体.

当您不想更改所有字体,而只是更改此特定图形的图例(属于特定axis对象的图例)的字体属性时,可以使用以下解决方案:

L = ax.legend()
plt.setp(L.texts, family='Consolas')
Run Code Online (Sandbox Code Playgroud)

这允许您为图例和轴选择不同的字体.当我需要一个等宽字体用于我的传奇时,我发现这很有用,但是对于轴不需要 - 允许我创建一个像这样的整洁的图例:

在此输入图像描述

注意标题是如何与图例不同的字体 - 这给了我一个很难实现的数字对齐.


frh*_*yme 6

我认为这是更好的方法。

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})
Run Code Online (Sandbox Code Playgroud)