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

kt06eoxx  于 2023-10-24  发布在  其他
关注(0)|答案(4)|浏览(124)

我想在matplotlib图的图例中显示Times New Roman字体。我已经将所有其他刻度标签/轴标签/标题更改为Times New Roman,并搜索了文档,但我只能找到如何使用pyplot.legend()中的prop参数更改图例中的字体大小
当然,在发帖后,我找到了答案。解决方案,为任何人与同样的问题:

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

slsn1g291#

这在google搜索结果中没有显示出来,所以我打算把它作为一个答案贴出来。字体的rc参数可以用来设置一个默认字体。
对于有同样问题的任何人的解决方案:

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

jjhzyzn02#

给出的.rc解决方案更改了所有绘图的默认字体。
这里有一个解决方案,当你不想改变所有的字体,而只是改变这个特定图形的图例(属于特定axis对象的图例)的字体属性时,可以这样做:

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

这允许您为图例和坐标轴选择不同的字体。当我需要为图例使用等宽字体时,我发现这很有帮助,但不适用于坐标轴-允许我创建这样一个整洁的图例:

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

wbrvyc0a

wbrvyc0a3#

我认为这是更好的方法。

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

ttvkxqim4#

这是2023年的一个例子。

plt.legend(
    labels,
    bbox_to_anchor=[1, 0, 0.5, 1],
    prop={'family':'monospace'}
)

prop={'family':'monospace'}-更改图例字体
bbox_to_anchor=[1, 0, 0.5, 1]-将图例移到右上角

相关问题