So ändern Sie die Schriftgröße der Legende mit matplotlib.pyplot
Lesezeit: 4 Minuten
Mike
Einfache Frage hier: Ich versuche, die Größe meiner Legende zu ermitteln matplotlib.pyplot kleiner zu sein (dh der Text kleiner zu sein). Der Code, den ich verwende, geht ungefähr 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)
Eine aktualisierte Antwort, 2021, finden Sie unter stackoverflow.com/a/62669552/2612410
– Alejo Bernhardin
7. Juni 2021 um 22:19 Uhr
Yann
Sie können eine individuelle Schriftgröße für die Legende einstellen, indem Sie die anpassen prop Stichwort.
plot.legend(loc=2, prop={'size': 6})
Diese nimmt ein Wörterbuch mit entsprechenden Schlüsselwörtern auf matplotlib.font_manager.FontProperties Eigenschaften. Siehe die Dokumentation für Legende:
Keyword-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.
Ab Version ist es auch möglich 1.2.1um das Schlüsselwort zu verwenden fontsize.
verwenden import matplotlib.pyplot as plt
Methode 1: Festlegen der Schriftgröße beim Aufruf von Legende (repetitiv)
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). Sie müssen jedoch jedes Mal, wenn Sie eine Legende erstellen, alles manuell eingeben.
(Hinweis: @ Mathias711 listete die verfügbaren benannten Schriftgrößen in seiner Antwort auf.)
Methode 2: Geben Sie die Schriftgröße in rcParams an (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 Standardschriftgröße für die Legende fest, und alle Legenden verwenden diese automatisch, sofern Sie mit Methode 1 nichts anderes angeben. Das bedeutet, dass Sie die Schriftgröße der Legende am Anfang Ihres Codes festlegen können und sich nicht darum kümmern müssen, sie für jede einzelne Legende festzulegen .
Wenn Sie eine benannte Größe verwenden, z 'medium'dann wird der Legendentext mit dem globalen skaliert font.size in rcParams. Wechseln font.size verwenden plt.rc(font.size="medium")
Nur um Python-Anfänger (wie ich) zu informieren: Methode 1 funktioniert nur nach dem Erstellen eines Plots (nach einer plot()-Zeile) und Methode 2 funktioniert nur vor dem Erstellen eines Plots. Danke dir. Ich stimme @Scott Gigante zu, das sollte die Antwort sein!
Es gibt eine Menge anderer rcParams, sie können auch in der matplotlibrc-Datei gesetzt werden.
Vermutlich können Sie es auch ändern, indem Sie a matplotlib.font_manager.FontProperties Beispiel, aber ich weiß nicht, wie ich das machen soll. –> siehe Yanns Antwort.
Mathias711
Es gibt auch einige mit Namen Schriftgrößenabgesehen 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")
Alejo Bernhardin
Jetzt im Jahr 2021 können Sie mit matplotlib 3.4.2 Ihre Legendenschriftarten festlegen
wo fontsize ist die Schriftgröße der Elemente in Legende und title_fontsize ist die Schriftgröße des Legendentitels. Weitere Informationen im Matplotlib-Dokumentation
Bryan P
Es gibt mehrere Einstellungen zum Anpassen der Legendengröße. Die zwei, die ich am nützlichsten finde, sind:
Etikettenabstand: Setzt den Abstand zwischen Etiketteneinträgen in Vielfachen der Schriftgröße. Zum Beispiel mit einer 10-Punkt-Schrift, legend(..., labelspacing=0.2) reduziert den Abstand zwischen den Einträgen auf 2 Punkte. Der Standardwert bei meiner Installation ist etwa 0,5.
prop: Dies ermöglicht die vollständige Kontrolle über die Schriftgröße usw. Sie können eine 8-Punkt-Schriftart mit festlegen legend(..., prop={'size':8}). Der Standardwert bei meiner Installation beträgt etwa 14 Punkte.
zusätzlich Legende Dokumentation listet eine Reihe anderer Polsterungs- und Abstandsparameter auf, darunter: borderpad, handlelength, handletextpad, borderaxespadund columnspacing. Diese folgen alle der gleichen Form wie Beschriftungsabstand und Fläche auch in Vielfachen der Schriftgröße.
Diese Werte können auch als Standardwerte für alle Figuren mit eingestellt werden matplotlibrc-Datei.
sjngm
Bei meiner Installation ändert FontProperties nur die Textgröße, aber es ist immer noch zu groß und zu weit auseinander. Ich habe einen Parameter in gefunden pyplot.rcParams: legend.labelspacing, von dem ich vermute, dass es auf einen Bruchteil der Schriftgröße eingestellt ist. Ich habe es mit geändert
Eine aktualisierte Antwort, 2021, finden Sie unter stackoverflow.com/a/62669552/2612410
– Alejo Bernhardin
7. Juni 2021 um 22:19 Uhr