J'ai un code comme celui-ci:
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()
On peut voir dans l'intrigue que le paramètre dans Fontsize n'affecte pas la taille de la police du titre de la légende.
Comment définir la taille de la police du titre de la légende sur une taille plus petite?
C'est certainement une vieille question, mais cela me frustrait aussi et aucune des autres réponses n'a changé la légende title fontsize du tout, mais a juste changé le reste du texte. Donc, après m'être cogné la tête contre la documentation de matplotlib pendant un certain temps, j'ai trouvé cela.
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')
Depuis Matplotlib 3.0.3, vous pouvez également le définir globalement avec
plt.rcParams['legend.title_fontsize'] = 'xx-small'
Voici comment changer la taille de police de la liste de légendes et/ou du titre de 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
Je me suis aussi cogné la tête, voici une autre façon plus fluide de le faire:
leg = ax.legend()
leg.set_title('A great legend',prop={'size':14})
Je ne sais pas comment le configurer pour une parcelle individuelle, mais je le fais toujours globalement:
plt.rc('legend',**{'fontsize':6})
C'est le plus rapide:
plt.legend(loc=2,prop={'size':6})
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 ça marche pour toi