62

我有这样的代码:

import matplotlib.pyplot as plt
from matplotlib.pyplot import *
from matplotlib.font_manager import FontProperties

fontP = FontProperties()
fontP.set_size('xx-small')
fig=plt.figure()
ax1=fig.add_subplot(111)
plot([1,2,3], label="test1")
ax1.legend(loc=0, ncol=1, bbox_to_anchor=(0, 0, 1, 1),
           prop = fontP,fancybox=True,shadow=False,title='LEGEND')
plt.show()

图例字体大小

从图中可以看出,Fontsize 中的设置不影响 Legend Title 的字体大小。

如何将图例标题的字体大小设置为较小的大小?

4

8 回答 8

86

这绝对是一个老问题,但也让我感到沮丧,其他答案都没有改变图例标题的字体大小,而是改变了其余的文本。因此,在将我的头撞到 matplotlib 文档上一段时间后,我想出了这个。

legend = ax1.legend(loc=0, ncol=1, bbox_to_anchor=(0, 0, 1, 1),
           prop = fontP,fancybox=True,shadow=False,title='LEGEND')

plt.setp(legend.get_title(),fontsize='xx-small')

从 Matplotlib 3.0.3 开始,您还可以使用全局设置它

plt.rcParams['legend.title_fontsize'] = 'xx-small'
于 2013-06-13T17:34:00.880 回答
41

以下是如何更改图例列表和/或图例标题的字体大小:

legend=plt.legend(list,loc=(1.05,0.05), title=r'$\bf{Title}$') #Legend: list, location, Title (in bold)
legend.get_title().set_fontsize('6') #legend 'Title' fontsize
plt.setp(plt.gca().get_legend().get_texts(), fontsize='12') #legend 'list' fontsize
于 2013-01-24T10:45:51.840 回答
31

我的头也撞到了它,这是另一种更流畅的方式:

leg = ax.legend()
leg.set_title('A great legend',prop={'size':14})
于 2017-05-19T15:29:44.087 回答
20

受当前最佳答案的启发,我找到了一种更自然的方法来更改图例中的字体大小。fontsize参数设置每个数据标签的字体大小title_fontsize,如果给图例一个标题,参数设置标题的字体大小。

import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot([0,1,2],[2,1,2],label='test_data (fs=12)')
ax.legend(fontsize=12, title='TITLE (fs=30)',title_fontsize=30)

给出这样的图:
在此处输入图像描述

于 2019-12-09T03:04:42.037 回答
15

我不知道如何为单独的情节设置它,但我总是在全球范围内这样做:

plt.rc('legend',**{'fontsize':6})
于 2012-09-13T10:09:32.353 回答
8

现在在 2021 年,您可以使用 matplotlib 3.4.2 设置您的图例字体

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

其中fontsize是图例中项目title_fontsize的字体大小,是图例标题的字体大小。matplotlib 文档中的更多信息

于 2021-06-07T22:16:00.857 回答
7

这是最快的:

plt.legend(loc=2,prop={'size':6})
于 2016-06-23T11:27:57.663 回答
5

我一般都是这样做的。情节完成后,我将执行以下操作

plt.legend(loc=0, numpoints=1)
leg = plt.gca().get_legend()
ltext  = leg.get_texts()
plt.setp(ltext, fontsize='small') 

我不知道这是否适合你

于 2012-09-13T10:18:29.397 回答