web-dev-qa-db-fra.com

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

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

legend fontsize

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?

48
Tapajit Dey

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'
58
nothilaryy

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
34
DougR

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})
19
Max

Je ne sais pas comment le configurer pour une parcelle individuelle, mais je le fais toujours globalement:

plt.rc('legend',**{'fontsize':6})
13
sega_sai

C'est le plus rapide:

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

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

5
Nicola Vianello