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

时间:2014-02-21 11:28:20

标签: 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')

3 个答案:

答案 0 :(得分:11)

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

解决其他任何有同样问题的人:

import matplotlib as mpl

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

答案 1 :(得分:9)

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

当您不想更改所有字体,而只是更改此特定图表(属于特定axis对象的图例)的图例的字体属性时,这是一个解决方案:< / p>

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

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

enter image description here

请注意标题的字体与图例的不同 - 这为我提供了一些难以实现的数字对齐。

答案 2 :(得分:1)

我认为这是更好的方法。

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})