HOWTO · Matplotlib

Text innerhalb der Darstellung in Matplotlib hinzufügen

Dieses Tutorial zeigt, wie Sie die Funktion `matplotlib.pyplot.text()` verwenden, um Text zu einer Abbildung oder zu den Achsen in Matplotlib hinzuzufügen.

Auf dieser Seite

Mit matplotlib.pyplot.text() lässt sich eine Beschriftung oder Notiz an einer bestimmten Position innerhalb eines Matplotlib-Diagramms platzieren. Der Funktion werden die x- und y-Koordinaten sowie der anzuzeigende Text übergeben; optionale Argumente steuern das Erscheinungsbild. Zum Beispiel setzt plt.text(2, 20, "Peak point") eine Beschriftung an die Datenkoordinate (2, 20). Mit einem Axes-Objekt verwenden Sie den entsprechenden Aufruf ax.text(2, 20, "Peak point"). Die vollständige Liste der Parameter finden Sie in der pyplot.text()-API-Referenz.

Mit matplotlib.pyplot.text() Text zu einem Diagramm hinzufügen

Das folgende Beispiel zeichnet eine Linie und platziert eine Beschriftung an einem ihrer Datenpunkte. Es verwendet die pyplot-Schnittstelle und legt den angezeigten Wertebereich so fest, dass die gewählten Koordinaten im Diagramm liegen.

import matplotlib.pyplot as plt

x = [1, 2, 3, 4]
y = [10, 15, 25, 30]

plt.plot(x, y, marker="o")
plt.xlim(0, 5)
plt.ylim(0, 35)
plt.text(3, 25, "Peak point", fontsize=12, color="crimson")
plt.title("A labeled line plot")
plt.xlabel("X")
plt.ylabel("Y")
plt.show()

x und y enthalten die dargestellten Daten; der Aufruf platziert „Peak point“ an der Koordinate (3, 25). Die beiden Aufrufe für die Achsengrenzen schließen diese Koordinate in den sichtbaren Bereich ein. Die Beschriftung „Peak point“ bleibt im unveränderten Beispiel auf Englisch. Wenn ein Skript mehrere Diagramme erstellt, ordnet ax.text(x, y, label) den Text einem bestimmten Axes-Objekt zu und macht deutlich, in welchem Diagramm er erscheint. Der pyplot-Aufruf eignet sich gut für ein einzelnes aktuelles Diagramm.

Text mit Datenkoordinaten und Achsengrenzen positionieren

Standardmäßig verwenden die Argumente x und y von text() Datenkoordinaten. Eine Beschriftung bei (3, 25) folgt daher diesen Werten im Diagramm; ihre Position wird nicht als Pixelabstand von einer Ecke aus angegeben. Die aktuellen x- und y-Grenzen bestimmen, welcher Teil der Datenkoordinatenebene sichtbar ist. Liegt die angegebene Position außerhalb dieser Grenzen, befindet sich der Text außerhalb des sichtbaren Diagrammbereichs. Legen Sie passende Grenzen mit plt.xlim() und plt.ylim() fest oder verwenden Sie mit einem Axes-Objekt ax.set_xlim() und ax.set_ylim().

Wählen Sie eine Position, an der die Beschriftung gut lesbar bleibt und keine wichtigen Daten verdeckt. Soll eine Notiz unabhängig von den Datenwerten an einem festen Anteil der Achsenfläche stehen, verwenden Sie Achsenkoordinaten mit transform=ax.transAxes: (0, 0) bezeichnet die linke untere und (1, 1) die rechte obere Ecke der Achsenfläche. Das unterscheidet sich von den standardmäßigen Datenkoordinaten und eignet sich für Bildunterschriften, die innerhalb des Diagramms verankert bleiben sollen.

Erscheinungsbild des Textes anpassen

Übergeben Sie text() Schlüsselwortargumente, um eine Beschriftung zu gestalten. fontsize ändert die Schriftgröße, color legt die Farbe fest und fontweight="bold" hebt den Text hervor. Mit rotation drehen Sie den Text. horizontalalignment (oder ha) und verticalalignment (oder va) richten ihn relativ zu seinen x- und y-Koordinaten aus. Beispielsweise zentrieren ha="center" und va="bottom" eine Beschriftung über einem Punkt und halten sie zugleich oberhalb des Punkts.

Mit dem Argument bbox fügen Sie einen Hintergrund hinter dem Text hinzu, der eine Beschriftung von einer unruhigen Linie oder Markierung abheben kann. Das Argument akzeptiert ein Dictionary mit Eigenschaften des Patch-Objekts. Das kompakte Beispiel kombiniert Ausrichtung, Hervorhebung, Drehung und einen durchscheinenden weißen Hintergrund:

import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.plot([1, 2, 3], [2, 4, 3], marker="o")
ax.text(2, 4, "Peak", fontsize=12, color="crimson", fontweight="bold",
        ha="center", va="bottom", rotation=15,
        bbox={"facecolor": "white", "alpha": 0.8})
plt.close(fig)

Zum Beispiel erzeugt bbox={"facecolor": "white", "alpha": 0.8} einen teilweise durchsichtigen weißen Hintergrund. Die im unveränderten Codebeispiel angezeigte Beschriftung bleibt auf Englisch. Verwenden Sie nur Optionen, die die Lesbarkeit verbessern; kräftige Farben, große Schrift oder eine allgemeine Drehung können von den Daten ablenken.

Anmerkungen und mehrzeiligen Text hinzufügen

Verwenden Sie plt.annotate(), wenn eine Notiz auf ein bestimmtes Merkmal zeigen soll. Das Argument xy gibt den beschriebenen Datenpunkt an, während xytext die Position des Textes festlegt. Zum Beispiel platziert plt.annotate("Peak", xy=(3, 25), xytext=(2, 30), arrowprops={"arrowstyle": "->"}) eine Notiz oberhalb des Punkts und zeichnet einen Pfeil darauf. Auch die Textposition der Anmerkung verwendet standardmäßig Datenkoordinaten; legen Sie daher Grenzen fest, die sowohl den Zielpunkt als auch die Notiz einschließen. Mit einem Axes-Objekt verwenden Sie ax.annotate(), damit Zielpunkt und Notiz zum gewünschten Diagramm gehören.

Für eine mehrzeilige Notiz fügen Sie der an text() übergebenen Zeichenfolge Zeilenumbruchzeichen hinzu, zum Beispiel "First line\nSecond line". Matplotlib gibt jeden Abschnitt an der gewählten Position in einer eigenen Zeile aus. Eine mehrzeilige Beschriftung eignet sich für eine kurze Erklärung; passen Sie Position und Ausrichtung so an, dass sie im sichtbaren Diagrammbereich bleibt und keine benachbarten Daten verdeckt. Die Beschriftungen „Peak“, „First line“ und „Second line“ bleiben in den unveränderten Beispielen auf Englisch. So können Sie Beschriftungen, Kontext und Zeiger hinzufügen und jede Notiz an die Koordinaten oder das Merkmal binden, auf die beziehungsweise das sie sich bezieht.