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)

805voto

Yann Punkte 30643

Sie können eine individuelle Schriftgröße für die Legende festlegen, indem Sie den prop Stichwort.

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

Dies erfordert ein Wörterbuch mit Schlüsselwörtern, die der matplotlib.font_manager.FontProperties Eigenschaften. Siehe die Dokumentation zur Legende :

Schlüsselwort-Argumente:

prop: [ None | FontProperties | dict ]
    A matplotlib.font_manager.FontProperties instance. If prop is a 
    dictionary, a new instance will be created with prop. If None, use
    rc settings.

Es ist auch möglich, ab der Version 1.2.1 um das Schlüsselwort fontsize .

128voto

binnev Punkte 1478

Mit import matplotlib.pyplot as plt

Methode 1: Angabe der Schriftgröße beim Aufruf der Legende (wiederholend)

plt.legend(fontsize=20) # using a size in points
plt.legend(fontsize="x-large") # using a named size

Mit dieser Methode können Sie die Schriftgröße für jede Legende bei der Erstellung festlegen (so dass Sie mehrere Legenden mit unterschiedlichen Schriftgrößen haben können). Allerdings müssen Sie jedes Mal, wenn Sie eine Legende erstellen, alles manuell eingeben.

(Hinweis: @Mathias711 hat in seiner Antwort die verfügbaren benannten Schriftgrößen aufgeführt)

Methode 2: Angabe der Schriftgröße in rcParams (praktisch)

plt.rc('legend',fontsize=20) # using a size in points
plt.rc('legend',fontsize='medium') # using a named size

Mit dieser Methode legen Sie die Standard-Schriftgröße der Legende fest, und alle Legenden verwenden automatisch diese Größe, sofern Sie nicht mit Methode 1 etwas anderes festlegen. Das bedeutet, dass Sie die Schriftgröße für die Legende am Anfang Ihres Codes festlegen können und sich nicht um die Einstellung für jede einzelne Legende kümmern müssen.

Wenn Sie eine bestimmte Größe verwenden, z. B. 'medium' wird der Legendentext mit der globalen Skalierung font.size sur rcParams . Zum Ändern font.size utiliser plt.rc(font.size='medium')

83voto

Mauro Punkte 1191

Dies sollte genügen

import pylab as plot
params = {'legend.fontsize': 20,
          'legend.handlelength': 2}
plot.rcParams.update(params)

Danach machen Sie die Handlung.

Es gibt eine ganze Reihe weiterer rcParams, die ebenfalls in der matplotlibrc-Datei gesetzt werden können.

Vermutlich können Sie es auch ändern, indem Sie eine matplotlib.font_manager.FontProperties Instanz, aber ich weiß nicht, wie man das macht. --> siehe die Antwort von Yann.

53voto

Mathias711 Punkte 6502

Es gibt auch ein paar Namen Schriftgrößen abgesehen von der Größe in Punkten:

xx-small
x-small
small
medium
large
x-large
xx-large

Verwendung:

pyplot.legend(loc=2, fontsize = 'x-small')

46voto

Alejo Bernardin Punkte 957

Jetzt im Jahr 2021, mit matplotlib 3.4.2 können Sie Ihre Legenden-Schriftarten mit

plt.legend(title="My Title", fontsize=10, title_fontsize=15)

wobei fontsize ist die Schriftgröße der Elemente in der Legende und title_fontsize ist die Schriftgröße des Legendentitels. Mehr Informationen unter matplotlib-Dokumentation

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