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

时间:2011-08-19 17:06:33

标签: python size matplotlib legend

这里的简单问题:我试图使用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 个答案:

答案 0 :(得分:438)

您可以通过调整prop关键字为图例设置单独的字体大小。

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

这会获取与matplotlib.font_manager.FontProperties属性相对应的关键字字典。请参阅documentation for legend

  

关键字参数:

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

答案 1 :(得分:48)

这应该

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

之后再绘制情节。

还有很多其他的rcParams,它们也可以在matplotlibrc文件中设置。

也可能你可以通过matplotlib.font_manager.FontProperties实例更改它,但我不知道该怎么做。 - >看看Yann的答案。

答案 2 :(得分:35)

除了点数之外,还有一些名为fontsizes的名称:

xx-small
x-small
small
medium
large
x-large
xx-large

用法:

pyplot.legend(loc=2, fontsize = 'x-small')

答案 3 :(得分:34)

使用import matplotlib.pyplot as plt

方法1:在调用图例时指定fontsize(重复)

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

使用此方法,您可以在创建时为每个图例设置fontsize(允许您使用不同的字体大小的多个图例)。但是,每次创建图例时都必须手动键入所有内容。

(注意:@ Mathias711在他的回答中列出了可用的命名fontsizes)

方法2:在rcParams中指定fontsize(方便)

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

使用此方法设置默认图例字体大小,除非您使用方法1另行指定,否则所有图例都将自动使用该图例。这意味着您可以在代码的开头设置图例字体大小,而不必担心将其设置为每个人的传奇。

如果您使用指定尺寸,例如'medium',然后图例文字将与font.size中的全局rcParams一起缩放。要更改font.size,请使用plt.rc(font.size='medium')

答案 4 :(得分:15)

有多种设置可用于调整图例大小。我认为最有用的两个是:

  • labelspacing:用于设置标签条目之间的间距,以字体大小的倍数表示。例如,使用10磅字体,legend(..., labelspacing=0.2)会将条目之间的间距减少到2个点。我安装的默认值约为0.5。
  • prop:允许完全控制字体大小等。您可以使用legend(..., prop={'size':8})设置8磅字体。我安装的默认值大约是14分。

此外,legend documentation列出了许多其他填充和间距参数,包括:borderpadhandlelengthhandletextpadborderaxespad和{{ 1}}。这些都遵循与labelspacing相同的形式,并且也是fontsize的倍数区域。

这些值也可以使用matplotlibrc file设置为所有数字的默认值。

答案 5 :(得分:6)

现在是2020年,使用matplotlib 3.2.2,您可以使用以下方式设置图例字体

plt.legend(title="My Title", fontsize=10, title_fontsize=15)

其中fontsize是图例中项目的字体大小,title_fontsize是图例标题的字体大小。 matplotlib documentation

中的更多信息

答案 6 :(得分:5)

在我的安装中,FontProperties仅更改文本大小,但它仍然太大并且间隔开。我在pyplot.rcParamslegend.labelspacing中找到了一个参数,我猜这个参数设置为字体大小的一小部分。我用

更改了它
pyplot.rcParams.update({'legend.labelspacing':0.25})

我不知道如何将它指定给pyplot.legend函数 - 传递

prop={'labelspacing':0.25}

prop={'legend.labelspacing':0.25}

发回错误。

答案 7 :(得分:1)

plot.legend(loc ='右下角',decimal_places = 2,fontsize ='11',title ='Hey there',title_fontsize ='20')

答案 8 :(得分:0)

您可以减小图例大小设置:

plt.legend(labelspacing=y, handletextpad=x,fontsize)  

labelspacing是每个标签之间的垂直间隔。

handletextpad是实际图例与您的图例之间的距离 标签。

并且fontsize是不言自明的