如何用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属性的关键字字典。 请参阅说明文档 :

关键字参数:

 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

这应该做的

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

然后再做剧情。

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

也大概你可以改变它通过matplotlib.font_manager.FontProperties实例,但我不知道该怎么做。 – >看Yann的回答。

除了点的大小之外,还有一些命名的字体大小:

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

用法:

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

使用import matplotlib.pyplot as plt

方法1:调用图例时指定字体大小(重复)

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

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

(注意:@ Mathias711在他的答案中列出了可用的命名字体)

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

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

使用这种方法,您可以设置默认的图例字体大小,除非您使用方法1指定,否则所有图例都将自动使用。这意味着您可以在代码开始处设置图例字体大小,而不用担心为每个图例设置图例。

如果你使用了一个命名的大小,比如'medium' ,那么图例文本将会用font.size中的全局font.size进行rcParams 。 要更改font.size使用plt.rc(font.size='medium')

有多个设置来调整图例大小。 我发现最有用的两个是:

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

另外, 图例文档还列出了许多其他的填充和间距参数,包括: borderpadhandletextpadborderaxespadcolumnspacingcolumnspacing 。 这些全都遵循相同的forms作为labelspacing和区域也是字体大小的倍数。

这些值也可以使用matplotlibrc文件设置为所有graphics的默认值。

在我的安装中,FontProperties只会改变文本的大小,但是它仍然太大而且没有间隔。 我在pyplot.rcParamsfind了一个参数: legend.labelspacing ,我猜测它被设置为字体大小的一小部分。 我已经改变了

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

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

 prop={'labelspacing':0.25} 

要么

 prop={'legend.labelspacing':0.25} 

返回一个错误。