511 Stimmen

Ändern der Legendengröße mit matplotlib.pyplot

Das ist eine einfache Frage: Ich versuche, die Größe meiner Legende mit matplotlib.pyplot kleiner sein (d. h. der Text muss kleiner sein). Der Code, den ich verwende, geht etwa so:

plot.figure()
plot.scatter(k, sum_cf, color='black', label='Sum of Cause Fractions')
plot.scatter(k, data[:, 0],  color='b', label='Dis 1: cf = .6, var = .2')
plot.scatter(k, data[:, 1],  color='r',  label='Dis 2: cf = .2, var = .1')
plot.scatter(k, data[:, 2],  color='g', label='Dis 3: cf = .1, var = .01')
plot.legend(loc=2)

22voto

Bryan P Punkte 5440

Es gibt mehrere Einstellungen zur Anpassung der Legendengröße. Die zwei, die ich am nützlichsten finde, sind:

  • labelspacing: legt die Abstände zwischen den Etiketteneinträgen in Vielfachen der Schriftgröße fest. Zum Beispiel bei einer Schriftgröße von 10 Punkt, legend(..., labelspacing=0.2) wird der Abstand zwischen den Einträgen auf 2 Punkte reduziert. Der Standardwert bei meiner Installation ist etwa 0,5.
  • prop: ermöglicht die vollständige Kontrolle über die Schriftgröße usw. Sie können eine 8-Punkt-Schriftart einstellen mit legend(..., prop={'size':8}) . Die Standardeinstellung bei meiner Installation beträgt etwa 14 Punkte.

Darüber hinaus ist die Legende Dokumentation listet eine Reihe weiterer Auffüll- und Abstandsparameter auf, darunter: borderpad , handlelength , handletextpad , borderaxespad y columnspacing . Diese folgen alle der gleichen Form wie labelspacing und area auch in Vielfachen von fontsize.

Diese Werte können auch als Standardwerte für alle Zahlen festgelegt werden, indem man die matplotlibrc-Datei .

7voto

swint144 Punkte 273

Bei meiner Installation wird mit FontProperties nur die Textgröße geändert, aber sie ist immer noch zu groß und zu weit auseinander. Ich habe einen Parameter in pyplot.rcParams : legend.labelspacing die vermutlich auf einen Bruchteil der Schriftgröße eingestellt ist. Ich habe es geändert mit

pyplot.rcParams.update({'legend.labelspacing':0.25})

Ich bin mir nicht sicher, wie ich es in der pyplot.legend-Funktion angeben soll - indem ich

prop={'labelspacing':0.25}

oder

prop={'legend.labelspacing':0.25}

kommt mit einem Fehler zurück.

6voto

Adarsha Neupane Punkte 59
plot.legend(loc = 'lower right', decimal_places = 2, fontsize = '11', title = 'Hey there', title_fontsize = '20')

3voto

Mauricio Arboleda Punkte 355

Können Sie die Legendengröße verringern:

plt.legend(labelspacing=y, handletextpad=x,fontsize)  

labelspacing ist der vertikale Abstand zwischen den einzelnen Etiketten.

handletextpad ist der Abstand zwischen der aktuellen Legende und Ihrer Beschriftung.

Und die Schriftgröße ist selbsterklärend

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X