2012-09-13 18 views
29

mam kod jak poniżej:Jak ustawić rozmiar czcionki w legendzie osi 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

To widać na wykresie, że ustawienie w fontSize nie wpływa na Legend Tytuł rozmiar czcionki.

Jak ustawić rozmiar czcionki tytułu legendy na mniejszy?

Odpowiedz

41

jest to z pewnością stare pytanie, ale było frustrujące mnie zbyt i żaden z pozostałych odpowiedzi zmienił legendę tytuł fontsize w ogóle, ale zamiast po prostu zmieniły resztę tekstu. Więc po uderzeniu głową o dokumentację matplotlib na chwilę wymyśliłem to.

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

nie wiem jak go skonfigurować dla indywidualnego działce, ale zawsze to zrobić globalnie:

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

ogólnie zrobić w ten sposób. Gdy działka zostało zrobione I wykonaj następujące czynności

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

Nie wiem, czy to działa dla Ciebie

+0

W ipython notesie, po prostu zrobić ' setp (gca(). get_legend(). get_texts(), fontsize = 'small') '. –

26

Oto jak zmienić wielkość czcionki listy legendy i/lub tytuł 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

Czy możesz mi pomóc w scaleniu kodu, który zaproponowałeś z moim? Widzę błędy, gdy dodam ten fragment do kodu, który mam. Konkretnie: Traceback (najnowszego połączenia ostatniego): w Legenda = plt.legend (liście, loc = (1.05,0.05) title = R '$ \ bf {title} $') #Legend: lista , lokalizacja, tytuł (pogrubiony) Plik "C: \ Python26 \ Lib \ site-packages \ matplotlib \ pyplot.py", wiersz 2800, w legendzie ret = gca(). legend (* args, ** kwargs) Plik "C: \ Python26 \ Lib \ site-packages \ matplotlib \ axes.py", wiersz 4494, w etykietach )] TypeError: argument zip # 2 musi obsługiwać iterację –

+0

Zauważyłem, że te polecenia nie działają w Spyderze przy użyciu konsoli IPython, ale działa dobrze w standardowej konsoli Pythona (v2.7). W IPython daje "NameError: name" gca "nie jest zdefiniowane". – DougR

5

To najszybszy:

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

Uderzyłem głową o nim zbyt, tu jest inny, bardziej sypki sposób to zrobić:

leg = ax.legend() 
leg.set_title('A great legend',prop={'size':14}) 
Powiązane problemy