Comment définir la taille de police de la légende de L'axe Matplotlib?

j'ai un code comme ceci:

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

legend fontsize

on peut voir dans le graphique que le réglage de Fontsize n'affecte pas la taille de police du titre de la légende.

Comment définir la taille de la police du titre de la légende à une taille plus petite?

38
demandé sur bmu 2012-09-13 12:43:58

6 réponses

C'est certainement une vieille question, mais a été frustrant, moi aussi, et aucune des autres réponses changé la légende titre fontsize à tous, mais plutôt juste changé le reste du texte. Donc après m'être cogné la tête contre la documentation de matplotlib pendant un moment, j'ai trouvé ça.

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')
48
répondu nothilaryy 2013-06-13 17:34:00

Voici comment changer la taille de la police de la liste de légende et/ou du titre de la légende:

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
30
répondu DougR 2015-12-04 12:14:38

je ne sais pas comment le configurer pour une parcelle individuelle, mais j'ai toujours le faire à l'échelle mondiale:

plt.rc('legend',**{'fontsize':6})
14
répondu sega_sai 2012-09-13 10:09:32

cogné ma tête contre elle aussi, Voici une autre façon plus fluide de le faire:

leg = ax.legend()
leg.set_title('A great legend',prop={'size':14})
10
répondu Max 2017-05-19 15:29:44

je fais généralement de cette façon. Une fois l'intrigue terminée, je fais ce qui suit

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

je ne sais pas si cela fonctionne pour vous

5
répondu Nicola Vianello 2012-09-13 10:18:29

C'est le plus rapide:

plt.legend(loc=2,prop={'size':6})
4
répondu Crococode 2016-06-23 11:27:57