19

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


当然,在发布后,我立即找到了答案。其他有相同问题的人的解决方案:

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

3 回答 3

18

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

其他有相同问题的人的解决方案:

import matplotlib as mpl
mpl.rc('font',family='Times New Roman')
于 2014-03-07T14:48:21.927 回答
14

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

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

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

这允许您为图例和轴选择不同的字体。当我需要为我的图例使用等宽字体时,我发现这很有帮助,但对于轴却不是——让我可以创建一个像这样的简洁图例:

在此处输入图像描述

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

于 2016-12-11T15:07:31.187 回答
7

我认为这是更好的方法。

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})
于 2018-08-07T07:26:08.823 回答