HOWTO · Matplotlib

Wie man die Schriftgröße des Figurentitels und der Achsenbeschriftungen in Matplotlib einstellt

Die Größe und Schriftart von Titel und Achsen in Matplotlib kann mit dem Schriftgrößenparameter, label.set_size() und dem rcParams-Dictionary festgelegt werden.

Auf dieser Seite

Für einen einzelnen Plot übergeben Sie fontsize an die Aufrufe für Titel und Achsenbeschriftungen. Wiederverwendbare Standardwerte legen Sie in rcParams fest; vorhandene Textobjekte ändern Sie einzeln mit set_size(). Die Beispiele verwenden einen Axes-Titel. Ein Titel für die gesamte Figure ist davon getrennt und wird mit fig.suptitle() gesetzt.

Titel und Achsenbeschriftungen mit fontsize formatieren

Übergeben Sie fontsize direkt an Axes.set_title(), Axes.set_xlabel() und Axes.set_ylabel(). Diese Aufrufe legen den Titel und die Beschriftungen für diese Axes fest. Wenn Sie zusätzlich einen Titel über der gesamten Figure anzeigen möchten, verwenden Sie fig.suptitle() und übergeben dafür einen eigenen fontsize-Wert.

Matplotlib gibt numerische Schriftgrößen in Punkten an. Verwenden Sie für ein einheitliches Erscheinungsbild bei mehreren Aufrufen denselben Wert oder wählen Sie für den Titel eine größere Schrift, um eine visuelle Hierarchie zu schaffen. Da Sie den Wert bei jedem Aufruf zum Festlegen eines Textelements übergeben, lässt sich eine einzelne Beschriftung ändern, ohne die anderen anzupassen.

Das vollständige Beispiel erstellt einen Plot, legt den Axes-Titel sowie beide Achsenbeschriftungen fest und ergänzt einen separaten Titel für die Figure. Die Codebeispiele bleiben unverändert; Beschriftungen darin erscheinen daher in ihrer ursprünglichen Sprache. Passen Sie die Punktgrößen an Ihr Layout an.

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.plot([0, 1, 2], [0, 1, 4])
ax.set_title("Values by x", fontsize=16)
ax.set_xlabel("x", fontsize=12)
ax.set_ylabel("value", fontsize=12)
fig.suptitle("Example figure", fontsize=20)
plt.show()

Standardschriftgrößen mit rcParams festlegen

rcParams speichert die Konfigurationsstandards von Matplotlib. Änderungen daran wirken sich auf Plot-Elemente aus, die anschließend im aktuellen Python-Prozess erstellt werden. Legen Sie diese Werte vor dem Erstellen des Plots fest, wenn die Standards einheitlich gelten sollen. Benötigt ein bestimmter Text eine andere Größe, übergeben Sie bei diesem Aufruf fontsize.

Verwenden Sie axes.labelsize für die x- und y-Achsenbeschriftungen, axes.titlesize für Axes-Titel und figure.titlesize für Titel der gesamten Figure, die mit fig.suptitle() erstellt werden. Die ersten beiden Einstellungen sind unabhängig von der Einstellung für den Figure-Titel. Als Werte eignen sich beispielsweise Punktgrößen oder unterstützte Größenbezeichnungen.

import matplotlib.pyplot as plt

plt.rcParams.update({
    "axes.labelsize": 12,
    "axes.titlesize": 16,
    "figure.titlesize": 20,
})

fig, ax = plt.subplots()
ax.plot([0, 1, 2], [0, 1, 4])
ax.set_title("Values by x")
ax.set_xlabel("x")
ax.set_ylabel("value")
fig.suptitle("Example figure")
plt.show()

Wenn nur ein bestimmter Plot andere Standardwerte benötigt, verwenden Sie matplotlib.rc_context(), um rcParams vorübergehend für einen Codeblock festzulegen. So werden diese Einstellungen nicht zu den Standards für spätere Plots im selben Prozess.

Zum Beispiel gelten mit with plt.rc_context({"axes.labelsize": 12, "axes.titlesize": 16}): die beiden Einstellungen nur für den eingerückten Plot-Code. Außerhalb dieses Blocks stellt Matplotlib die vorherigen Werte wieder her. Das ist praktisch, wenn ein Skript Plots mit unterschiedlichen Stilen erstellt.

Einzelne Titel und Beschriftungen mit set_size() anpassen

Jeder Titel und jede Achsenbeschriftung ist ein Textobjekt mit einer set_size()-Methode. Das ist nützlich, wenn der Plot bereits erstellt wurde oder Titel und Beschriftungen unterschiedliche Größen erhalten sollen. Das folgende Beispiel ruft mit plt.gca() die aktuellen Axes ab und legt dann die Schriftgröße für deren Titel- und Beschriftungstexte fest.

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.plot([0, 1, 2], [0, 1, 4])
ax.set_title("Values by x")
ax.set_xlabel("x")
ax.set_ylabel("value")

axes = plt.gca()
axes.title.set_size(16)
axes.xaxis.label.set_size(12)
axes.yaxis.label.set_size(12)
plt.show()

Bei mehreren Axes behalten Sie am besten eine Referenz auf das Element, das Sie ändern möchten, etwa mit ax.title.set_size(16). Verlassen Sie sich nicht auf plt.gca(), denn dieser Aufruf gibt die gerade aktuellen Axes zurück. Für einen Titel der gesamten Figure legen Sie die Größe beim Aufruf von fig.suptitle() fest oder speichern das zurückgegebene Textobjekt und rufen darauf set_size() auf. Ein Axes-Titel gehört zu einem einzelnen Teilplot; der Figure-Titel beschreibt die gesamte Figure.