如何设置Matplotlib轴图例的字体大小?

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

我有一个代码是这样的:

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()

从图中可以看出,字体大小中的设置不影响图例标题字体大小。
如何将图例标题的字体大小设置为较小的大小?

sh7euo9m

sh7euo9m1#

我不知道如何为单个绘图设置它,但我总是全局设置:

plt.rc('legend',**{'fontsize':6})
31moq8wy

31moq8wy2#

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

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

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

ds97pgxw

ds97pgxw3#

这是最快的:

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

wwodge7n4#

我一般是这样做的。一旦情节完成了,我就做下面的事情

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

我不知道这对你有用吗

e5nqia27

e5nqia275#

最简单的方法是使用(它服务于我)

ax.legend(title = "anything", title_fontsize = 8, fontsize = 6)

title_fontsize可用于更改标题的字体大小

dy1byipe

dy1byipe6#

这绝对是一个老问题,但也让我很沮丧,其他的答案根本没有改变图例 * 标题 * 字体大小,而只是改变了文本的其余部分。所以在我对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'
uqjltbpv

uqjltbpv7#

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

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
vlurs2pr

vlurs2pr8#

我的头也撞到了它,这里有另一个更流畅的方式做它:

leg = ax.legend()
leg.set_title('A great legend',prop={'size':14})
qyzbxkaa

qyzbxkaa9#

受当前最佳答案的启发,我找到了一种稍微更自然的方法来更改图例中的字号。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)

给出了这样一个图:

相关问题