2012-09-13 28 views
29

Ho un codice come questo:Come impostare la dimensione del font della legenda dell'asse Matplotlib?

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

Lo si può vedere nel grafico che l'impostazione di Caratteri non influisce sulla dimensione del carattere Leggenda Titolo.

Come impostare la dimensione del carattere del titolo della legenda su una dimensione più piccola?

risposta

41

Questo è sicuramente una vecchia questione, ma mi è stato frustrante troppo e nessuna delle altre risposte cambiato la leggenda titolo fontsize a tutti, ma invece appena cambiato il resto del testo. Quindi dopo aver sbattuto la testa contro la documentazione di matplotlib per un po 'mi è venuta in mente.

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') 
14

Non so come impostarlo per una trama individuale, ma lo faccio sempre a livello globale:

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

Io in genere faccio in questo modo. Una volta che la trama è stato fatto che faccio la seguente

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

non so se questo funziona per voi

+0

Nel quaderno ipython, ho solo fare ' setp (gca(). get_legend(). get_texts(), fontsize = 'small') '. –

26

Ecco come modificare la grandezza scrittura della lista leggenda e/o titolo di legenda:

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 
+0

Puoi per favore aiutarmi a fondere il pezzo di codice che hai proposto con il mio? Vedo alcuni errori quando aggiungo questo pezzo al codice che ho. In particolare: Traceback (chiamata più recente scorso): in leggenda = plt.legend (lista, loc = (1.05,0.05), title = R '$ \ bf {Title} $') #legend: lista , posizione, titolo (in grassetto) File "C: \ Python26 \ Lib \ site-packages \ matplotlib \ pyplot.py", riga 2800, nella legenda ret = gca(). legend (* args, ** kwargs) File "C: \ Python26 \ Lib \ site-packages \ matplotlib \ axes.py", riga 4494, nella legenda etichette)] TipoErrore: argomento zip # 2 deve supportare l'iterazione –

+0

Ho notato che questi comandi non funzionano in Spyder usando la console IPython ma funziona bene in una console standard python (v2.7). In IPython fornisce 'NameError: name' gca 'non è definito'. – DougR

5

Questo è il più veloce:

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

sbattuto la testa contro di esso troppo, qui è un altro modo più fluente di farlo:

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