size - matplotlib.pyplot,如何更改图例大小

简单问题:我试图使用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)

时间:

可以通过调整'prop'关键字来设置图例的单个字体大小。


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

这需要一个对应于 matplotlib.font_manager.FontProperties属性,请参见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.

也可以使用关键字fontsize,在版本1.2.1中使用。

这应该能做到


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

之后再做plot 。

也可能你可以通过 matplotlib.font_manager.FontProperties

在我的安装中,FontProperties只更改文本大小,但是它仍然太大和间隔不足,我在pyplot.rcParams中找到了一个参数: legend.labelspacing,我猜它被设置为字体大小的一小部分。 我已经改变了


pyplot.rcParams.update({'legend.labelspacing':0.25})

我不确定如何将它指定给pyplot.legend函数-通过


prop={'labelspacing':0.25}

或者


prop={'legend.labelspacing':0.25}

返回一个错误。

调整legend大小有多个设置,我发现最有用的两个是:

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

此外,图例文档列出了许多其他填充和间距参数,包括: borderpadhandlelengthhandletextpadborderaxespadcolumnspacing ,这些都遵循与labelpacing和area相同的形式,也是fontsize的倍数。

这些值也可以设置为使用matplotlibrc文件

除了点的大小之外,还有几个命名fontsizes


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

使用方法:


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

...