Einfache Frage hier: Ich versuche, die Größe meiner Legende mit matplotlib.pyplot
kleiner zu machen (d. H. Den Text kleiner zu machen). Der Code, den ich verwende, sieht ungefähr so aus:
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)
Sie können eine individuelle Schriftgröße für die Legende festlegen, indem Sie das Schlüsselwort prop
anpassen.
plot.legend(loc=2, prop={'size': 6})
Dies erfordert ein Wörterbuch mit Schlüsselwörtern, die den Eigenschaften von matplotlib.font_manager.FontProperties
entsprechen. Siehe Dokumentation zur 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 1.2.1 kann auch das Schlüsselwort fontsize
verwendet werden.
Das sollte reichen
import pylab as plot
params = {'legend.fontsize': 20,
'legend.handlelength': 2}
plot.rcParams.update(params)
Dann mache den Plot danach.
Es gibt eine Menge anderer rcParams, sie können auch in der matplotlibrc-Datei eingestellt werden.
Vermutlich können Sie es auch ändern, indem Sie eine matplotlib.font_manager.FontProperties
-Instanz übergeben, aber ich weiß nicht, wie ich das machen soll. -> siehe Yanns Antwort.
Es gibt auch ein paar namens fontsizes , abgesehen von der Größe in Punkten:
xx-small
x-small
small
medium
large
x-large
xx-large
Verwendungszweck:
pyplot.legend(loc=2, fontsize = 'x-small')
mit import matplotlib.pyplot as plt
Methode 1: Geben Sie die Schriftgröße an, wenn Sie legend (repetitive) aufrufen.
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 hat die verfügbaren benannten Schriftgrößen in seiner Antwort aufgelistet.)
Methode 2: Geben Sie die Schriftgröße in rcParams an (bequem)
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 Legenden fest, und alle Legenden verwenden diese automatisch, sofern Sie mit Methode 1 nichts anderes angeben. Dies bedeutet, dass Sie die Schriftgröße für Legenden am Anfang Ihres Codes festlegen können und sich nicht darum kümmern müssen, sie für jede einzelne Legende einzeln festzulegen .
Wenn Sie eine benannte Größe verwenden, z. 'medium'
, dann wird der Legendentext mit dem globalen font.size
in rcParams
skaliert. Zum Ändern von font.size
verwenden Sie plt.rc(font.size='medium')
Es gibt mehrere Einstellungen zum Anpassen der Legendengröße. Die zwei, die ich am nützlichsten finde, sind:
legend(..., labelspacing=0.2)
den Abstand zwischen Einträgen auf 2 Punkte. Die Standardeinstellung für meine Installation ist ungefähr 0,5.legend(..., prop={'size':8})
können Sie eine 8-Punkt-Schrift einstellen. Die Standardeinstellung für meine Installation beträgt ungefähr 14 Punkte.Darüber hinaus enthält die Legendendokumentation eine Reihe weiterer Auffüll- und Abstandsparameter, darunter: borderpad
, handlelength
, handletextpad
, borderaxespad
und columnspacing
. Diese folgen alle der gleichen Form wie der Etikettenabstand und der Fläche, auch in Vielfachen der Schriftgröße.
Diese Werte können auch mit matplotlibrc file als Standard für alle Zahlen festgelegt werden.
Bei meiner Installation ändert FontProperties nur die Textgröße, ist aber immer noch zu groß und zu weit auseinander. Ich habe in pyplot.rcParams
: legend.labelspacing
einen Parameter gefunden, der vermutlich auf einen Bruchteil der Schriftgröße festgelegt ist. Ich habe es mit geändert
pyplot.rcParams.update({'legend.labelspacing':0.25})
Ich bin nicht sicher, wie ich es für die Funktion pyplot.legend festlegen soll - übergeben
prop={'labelspacing':0.25}
oder
prop={'legend.labelspacing':0.25}
kommt mit einem Fehler zurück.