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

Posted

技术标签:

【中文标题】如何在 matplotlib 中更改图例字体名称【英文标题】:How to change legend fontname in matplotlib 【发布时间】:2014-03-22 21:27:42 【问题描述】:

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


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

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

【问题讨论】:

将您的答案添加为答案,以便可以接受并从“未回答”问题队列中取出。欢迎来到 ***! 【参考方案1】:

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

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

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

【讨论】:

【参考方案2】:

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

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

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

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

请注意标题与图例的字体不同 - 这使我可以对齐数字,否则很难实现。

【讨论】:

很好,只是 Consolas 似乎没有标准安装或字体系列。 'monospace' 为我工作 @DimaLituiev - Consolas 是 Mac 上的标准等宽字体。我猜你有一台Windows机器?无论如何 - 这是作为指导,而不是处方...... 在我的 mac 10.10 上,open -a /Applications/Font\ Book.app 显示 9 种等宽字体,但只有 Courier Courier Newmonospace 在 Matplotlib 2.2.3 中工作。另见font_manager【参考方案3】:

我认为这是更好的方法。

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)

【讨论】:

以上是关于如何在 matplotlib 中更改图例字体名称的主要内容,如果未能解决你的问题,请参考以下文章

通过 matplotlib 中的列值更改图例条目

如何设置 Matplotlib 轴图例的字体大小?

python使用matplotlib可视化为可视化图像添加图例(legend)自定义图例的字体格式字体大小字体颜色等

如何更改 matplotlib(python)中的字体?

更改图例标签时,Matplotlib 图例颜色会发生变化

Pandas Matplotlib:如何更改散点图中图例的形状和大小?