如何使用matplotlib.pyplot更改图例字体大小

510 投票
9 回答
976177 浏览
提问于 2025-04-16 23:58

这里有个简单的问题:我想用 matplotlib.pyplot 来让我的图例变小一点(也就是让文字变小)。我用的代码大概是这样的:

plot.figure()
plot.scatter(k, sum_cf, color='black', label='Sum of Cause Fractions')
plot.scatter(k, data[:, 0],  color='b', label='Dis 1: cf = .6, var = .2')
plot.scatter(k, data[:, 1],  color='r',  label='Dis 2: cf = .2, var = .1')
plot.scatter(k, data[:, 2],  color='g', label='Dis 3: cf = .1, var = .01')
plot.legend(loc=2)

9 个回答

83

这样做就可以了。

import pylab as plot
params = {'legend.fontsize': 20,
          'legend.handlelength': 2}
plot.rcParams.update(params)

然后再进行绘图。

还有很多其他的设置选项(rcParams),这些也可以在matplotlibrc文件中进行设置。

另外,可能你也可以通过传递一个 matplotlib.font_manager.FontProperties 的实例来改变它,不过我不太清楚怎么做。--> 可以看看Yann的回答。

127

使用 import matplotlib.pyplot as plt

方法一:在调用图例时指定字体大小(重复性高)

plt.legend(fontsize=20) # using a size in points
plt.legend(fontsize="x-large") # using a named size

通过这种方法,你可以在创建每个图例的时候设置字体大小(这样可以让不同的图例使用不同的字体大小)。不过,每次创建图例的时候你都得手动输入所有内容。

(注意:@Mathias711 在他的回答中列出了可用的字体大小名称)

方法二:在 rcParams 中指定字体大小(方便)

plt.rc('legend',fontsize=20) # using a size in points
plt.rc('legend',fontsize='medium') # using a named size

这种方法可以设置默认的图例字体大小,所有图例都会自动使用这个大小,除非你用方法一另行指定。这意味着你可以在代码开始时设置图例的字体大小,之后就不用担心每个图例的字体大小了。

如果你使用一个命名的大小,比如 'medium',那么图例的文字大小会跟随全局的 font.sizercParams 中的设置变化。要更改 font.size,可以使用 plt.rc(font.size='medium')

804

你可以通过调整 prop 这个关键词,来为图例设置单独的字体大小。

plot.legend(loc=2, prop={'size': 6})

这个关键词需要一个字典,里面包含了和 matplotlib.font_manager.FontProperties 属性对应的关键词。你可以查看 图例的文档来了解更多信息:

关键词参数:

prop: [ None | FontProperties | dict ]
    A matplotlib.font_manager.FontProperties instance. If prop is a 
    dictionary, a new instance will be created with prop. If None, use
    rc settings.

从版本 1.2.1 开始,你也可以使用关键词 fontsize 来设置字体大小。

撰写回答