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

zpgglvta  于 2022-11-15  发布在  其他
关注(0)|答案(9)|浏览(186)

简单的问题在这里:我尝试使用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)
2nbm6dog

2nbm6dog1#

通过调整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

eanckbw9

eanckbw92#

使用import matplotlib.pyplot as plt

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

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

使用此方法,您可以在创建图例时设置每个图例的字体大小(允许您拥有多个具有不同字体大小的图例)。但是,您必须在每次创建图例时手动键入所有内容。
(Note:@Mathias711在他的回答中列出了可用的命名字体大小)

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

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

使用此方法可以设置默认图例字体大小,除非使用方法1另行指定,否则所有图例都将自动使用该字体大小。这意味着您可以在代码开始时设置图例字体大小,而不必担心为每个单独的图例设置字体大小。
如果使用命名大小(例如'medium'),则图例文本将在rcParams中随全局font.size缩放。要更改font.size,请使用plt.rc(font.size='medium')

9cbw7uwe

9cbw7uwe3#

这个应该可以

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

然后再做情节。
还有很多其他的rcParams,它们也可以在matplotlibrc文件中设置。
你也可以通过一个matplotlib.font_manager.FontProperties示例来改变它,但是我不知道怎么做。

snz8szmq

snz8szmq4#

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

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

用法:

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

9rygscc15#

现在在2021中,通过matplotlib 3.4.2,您可以使用以下命令设置图例字体

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

其中fontsize是图例中项目的字体大小,title_fontsize是图例标题的字体大小。更多信息请参见matplotlib documentation

w1e3prcc

w1e3prcc6#

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

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

此外,图例文档还列出了许多其他填充和间距参数,包括:borderpadhandlelengthhandletextpadborderaxespadcolumnspacing。这些都遵循与labelspacing和area相同的格式,也是字体大小的倍数。
这些值也可以使用matplotlibrc file设置为所有图形的默认值。

py49o6xq

py49o6xq7#

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

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

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

prop={'labelspacing':0.25}

prop={'legend.labelspacing':0.25}

返回一个错误。

6l7fqoea

6l7fqoea8#

plot.legend(loc = 'lower right', decimal_places = 2, fontsize = '11', title = 'Hey there', title_fontsize = '20')
o7jaxewo

o7jaxewo9#

可以减小图例大小设置:

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

labelspacing是每个标签之间的垂直间距。
handletextpad是实际图例与标注之间的距离。
fontsize是不言自明的

相关问题