So ändern Sie die Schriftgröße der Legende mit matplotlib.pyplot

Lesezeit: 4 Minuten

Mikes Benutzeravatar
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

Benutzeravatar von Yann
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!

    – Mateus da Silva Teixeira

    16. August 2019 um 14:02 Uhr

Benutzeravatar von Mauro
Mauro

Das sollte reichen

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

Dann machen Sie den Plot danach.

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.

Benutzeravatar von Mathias711
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")

Benutzeravatar von Alejo Bernardin
Alejo Bernhardin

Jetzt im Jahr 2021 können Sie mit matplotlib 3.4.2 Ihre Legendenschriftarten festlegen

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

wo fontsize ist die Schriftgröße der Elemente in Legende und title_fontsize ist die Schriftgröße des Legendentitels. Weitere Informationen im Matplotlib-Dokumentation

Benutzeravatar von Bryan P
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.

Benutzeravatar von sjngm
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

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

Ich bin mir nicht sicher, wie ich es für die Funktion pyplot.legend angeben soll – übergeben

prop={'labelspacing':0.25}

oder

prop={'legend.labelspacing':0.25}

kommt mit einem Fehler zurück.

1440620cookie-checkSo ändern Sie die Schriftgröße der Legende mit matplotlib.pyplot

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy