问题:如何使用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)
回答 0
您可以通过调整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
。
回答 1
这应该做
import pylab as plot
params = {'legend.fontsize': 20,
'legend.handlelength': 2}
plot.rcParams.update(params)
然后再做图。
还有很多其他rcParam,它们也可以在matplotlibrc文件中设置。
大概还可以通过matplotlib.font_manager.FontProperties
实例更改它,但是我不知道该怎么做。->请参阅Yann的答案。
回答 2
使用 import matplotlib.pyplot as plt
方法1:调用图例时指定字体大小(重复)
plt.legend(fontsize=20) # using a size in points
plt.legend(fontsize="x-large") # using a named size
使用此方法,您可以在创建时为每个图例设置字体大小(允许您拥有多个具有不同字体大小的图例)。但是,每次创建图例时,都必须手动键入所有内容。
(注意:@ 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
在rcParams
。改变font.size
用途plt.rc(font.size='medium')
回答 3
除了点的大小,还有一些命名的fontsizes:
xx-small
x-small
small
medium
large
x-large
xx-large
用法:
pyplot.legend(loc=2, fontsize = 'x-small')
回答 4
有多种设置可用于调整图例大小。我发现最有用的两个是:
- labelspacing:以字体大小的倍数设置标签条目之间的间距。例如使用10磅字体,
legend(..., labelspacing=0.2)
会将条目之间的间距减少到2点。我安装的默认值约为0.5。 - prop:可以完全控制字体大小等。您可以使用设置8点字体
legend(..., prop={'size':8})
。我安装的默认值约为14点。
此外,图例的文档列出了许多其他填充的和间隔的参数,包括:borderpad
,handlelength
,handletextpad
,borderaxespad
,和columnspacing
。这些都遵循相同的格式,与labelspacing和area相同,也是fontsize的倍数。
也可以使用matplotlibrc文件将这些值设置为所有图形的默认值。
回答 5
在我的安装中,FontProperties仅更改文本大小,但它仍然太大且间隔开。我在pyplot.rcParams
:中找到了一个参数legend.labelspacing
,我猜它被设置为字体大小的一小部分。我已经改变了
pyplot.rcParams.update({'legend.labelspacing':0.25})
我不确定如何将其指定给pyplot.legend函数-传递
prop={'labelspacing':0.25}
要么
prop={'legend.labelspacing':0.25}
返回错误。
回答 6
plot.legend(loc =’右下角’,decimal_places = 2,fontsize =’11’,title =’嘿’,title_fontsize =’20’)