W3docs

Matplotlib Beschriftungen

Achsenbeschriftungen, Titel, Legenden und Textanmerkungen in Matplotlib hinzufügen und anpassen – mit praktischen Python-Beispielen.

Beschriftungen verwandeln ein rohes Diagramm in eine verständliche Geschichte. Dieses Kapitel behandelt alle wichtigen Beschriftungselemente in Matplotlib: Achsenbeschriftungen, Diagrammtitel, Legenden, Tick-Beschriftungen und Textanmerkungen. Für jedes Element werden die wesentliche Funktion, die nützlichsten Parameter und praktische Beispiele vorgestellt, die sofort ausgeführt werden können.

Stellen Sie vor dem Start sicher, dass Matplotlib installiert ist. Weitere Informationen zur Einrichtung finden Sie unter Matplotlib – Erste Schritte.

Achsenbeschriftungen setzen

Die Funktionen xlabel() und ylabel() fügen der horizontalen bzw. vertikalen Achse beschreibenden Text hinzu. Beide akzeptieren dieselben Parameter.

import matplotlib.pyplot as plt

height = [63, 64, 65, 66, 67, 68, 69, 70, 71, 72]
weight = [127, 130, 133, 136, 139, 142, 145, 148, 151, 154]

plt.scatter(height, weight)
plt.xlabel('Height (inches)')
plt.ylabel('Weight (pounds)')
plt.show()

Erscheinungsbild der Beschriftung anpassen

Beide Funktionen akzeptieren ein fontsize-Argument (in Punkt) sowie beliebige Schlüsselwörter aus der Text-Klasse von Matplotlib, wie color, fontweight und fontstyle.

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]

plt.plot(x, y)
plt.xlabel('Time (seconds)', fontsize=13, color='steelblue', fontweight='bold')
plt.ylabel('Distance (meters)', fontsize=13, color='steelblue', fontweight='bold')
plt.show()

Beschriftungsabstand anpassen

Verwenden Sie den Parameter labelpad, um eine Beschriftung weiter von den Achsen-Ticks zu verschieben – nützlich, wenn Tick-Beschriftungen lang oder gedreht sind.

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [1000, 2000, 3000, 4000, 5000]

plt.plot(x, y)
plt.xlabel('Quarter', labelpad=12)
plt.ylabel('Revenue ($)', labelpad=16)
plt.show()

Einen Diagrammtitel hinzufügen

Die Funktion title() fügt standardmäßig einen zentriert über dem Diagramm platzierten Titel hinzu.

import matplotlib.pyplot as plt

months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
          'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
sales = [25000, 30000, 45000, 35000, 50000, 60000,
         70000, 80000, 90000, 100000, 110000, 120000]

plt.plot(months, sales)
plt.title('Monthly Sales')
plt.xlabel('Month')
plt.ylabel('Sales ($)')
plt.show()

Titelposition und -stil

Übergeben Sie loc ('left', 'center', 'right') um die horizontale Ausrichtung zu ändern, und pad um den Abstand zwischen dem Titel und dem oberen Rand des Diagramms zu steuern.

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [3, 7, 2, 9, 4]

plt.plot(x, y, marker='o')
plt.title('Sensor Readings', loc='left', pad=14,
          fontsize=15, fontweight='bold', color='darkslategray')
plt.show()

Abbildungstitel mit suptitle()

Wenn eine Abbildung mehrere Teildiagramme enthält, verwenden Sie suptitle(), um einen Titel hinzuzufügen, der alle umfasst. Einzelne Teildiagramme können weiterhin eigene title()-Aufrufe haben.

import matplotlib.pyplot as plt

fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(8, 3))

ax1.plot([1, 2, 3], [4, 5, 6])
ax1.set_title('Product A')

ax2.plot([1, 2, 3], [6, 5, 4])
ax2.set_title('Product B')

fig.suptitle('Q1 Sales Comparison', fontsize=14, fontweight='bold')
plt.tight_layout()
plt.show()

tight_layout() verhindert, dass der Abbildungstitel den Inhalt der Teildiagramme überlagert. Eine ausführliche Behandlung von Mehrtafel-Abbildungen finden Sie unter Matplotlib Subplots.

Die Legende anpassen

Eine Legende identifiziert die Datenreihen in einem Diagramm. Rufen Sie legend() nach dem Zeichnen der Reihen auf.

Einfache Legende

Übergeben Sie das Schlüsselwort label bei jedem Plot-Aufruf und rufen Sie anschließend plt.legend() auf, um sie darzustellen.

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]

plt.plot(x, [2, 4, 6, 8, 10], label='Series A')
plt.plot(x, [1, 3, 5, 7, 9],  label='Series B')
plt.legend()
plt.xlabel('x')
plt.ylabel('y')
plt.title('Two Series')
plt.show()

Position der Legende

Übergeben Sie den Parameter loc, um die Legende genau zu platzieren. Häufige Werte: 'upper left', 'upper right', 'lower left', 'lower right', 'center' oder 'best' (Matplotlib wählt die Position mit dem geringsten Überschneidungsbereich – der Standard).

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]

plt.plot(x, [2, 4, 6, 8, 10], label='Revenue')
plt.plot(x, [1, 2, 3, 4, 5],  label='Costs')
plt.legend(loc='upper left')
plt.show()

Legende außerhalb der Achsen

Verwenden Sie bbox_to_anchor zusammen mit loc, um die Legende außerhalb des Diagrammbereichs zu platzieren. Rufen Sie tight_layout() auf oder passen Sie subplots_adjust an, damit die Legende nicht abgeschnitten wird.

import matplotlib.pyplot as plt

x = [1, 2, 3, 4]
fig, ax = plt.subplots()

ax.plot(x, [1, 4, 9, 16],  label='Quadratic')
ax.plot(x, [1, 8, 27, 64], label='Cubic')
ax.legend(loc='upper left', bbox_to_anchor=(1, 1))
plt.tight_layout()
plt.show()

Legende gestalten

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]

plt.plot(x, [2, 4, 6, 8, 10], label='Actual')
plt.plot(x, [1, 3, 5, 7, 9],  label='Forecast', linestyle='--')
plt.legend(
    title='Data',
    fontsize=11,
    title_fontsize=12,
    framealpha=0.9,
    edgecolor='gray',
)
plt.show()

framealpha steuert die Deckkraft des Legendenrahmens (0 = transparent, 1 = undurchsichtig). title fügt eine Kopfzeile innerhalb des Legendenrahmens hinzu.

Tick-Beschriftungen anpassen

Tick-Beschriftungen sind die Zahlen oder Zeichenketten, die Matplotlib entlang jeder Achse druckt. Verwenden Sie xticks() und yticks(), um sie zu überschreiben.

Tick-Beschriftungen drehen

Lange Kategorienamen überlappen sich standardmäßig. Drehen Sie sie mit dem Parameter rotation.

import matplotlib.pyplot as plt

categories = ['January', 'February', 'March', 'April', 'May', 'June']
values = [12, 19, 14, 22, 18, 25]

plt.bar(categories, values)
plt.xticks(rotation=45, ha='right')
plt.ylabel('Units sold')
plt.title('Monthly Sales')
plt.tight_layout()
plt.show()

ha='right' richtet die rechte Kante jeder Beschriftung am zugehörigen Tick-Strich aus, was nach der Drehung sauberer aussieht.

Benutzerdefinierte Tick-Werte und Beschriftungen setzen

Übergeben Sie zwei Listen an xticks(): die Tick-Positionen und die anzuzeigenden Zeichenketten.

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 2 * np.pi, 100)
plt.plot(x, np.sin(x))

ticks = [0, np.pi / 2, np.pi, 3 * np.pi / 2, 2 * np.pi]
labels = ['0', 'π/2', 'π', '3π/2', '2π']
plt.xticks(ticks, labels, fontsize=12)
plt.ylabel('sin(x)')
plt.title('Sine Wave with Custom Tick Labels')
plt.show()

Schriftart der Tick-Beschriftung gestalten

Sowohl xticks() als auch yticks() akzeptieren Schriftart-Schlüsselwortargumente direkt.

import matplotlib.pyplot as plt

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

plt.plot(x, y)
plt.xticks(fontsize=12, color='steelblue')
plt.yticks(fontsize=12, color='steelblue')
plt.show()

Textanmerkungen hinzufügen

Die Funktion text() platziert eine Zeichenkette an einer beliebigen Position innerhalb des Achsenkoordinatensystems.

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [2, 4, 3, 6, 5]

plt.plot(x, y, marker='o')
plt.text(3, 3.2, 'dip here', fontsize=11, color='crimson')
plt.title('Text Annotation Example')
plt.show()

Die ersten beiden Argumente sind die x- und y-Koordinaten in Dateneinheiten.

Anmerkungen mit einem Pfeil

annotate() zeichnet eine Beschriftung mit einem optionalen Pfeil, der auf einen bestimmten Datenpunkt zeigt. Es ist das richtige Werkzeug, wenn Ausreißer oder Spitzenwerte hervorgehoben werden sollen.

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [4, 7, 2, 9, 3]

plt.plot(x, y, marker='o')
plt.annotate(
    'Peak',
    xy=(4, 9),           # tip of the arrow (the data point)
    xytext=(3.2, 9.5),   # where the label sits
    arrowprops=dict(arrowstyle='->', color='black'),
    fontsize=12,
)
plt.title('Annotated Line Plot')
plt.show()

Objektorientierte API: Axes-Methoden verwenden

Alle oben genannten Funktionen sind bequeme Wrapper um die aktuell aktiven Achsen. Wenn mit mehreren Teildiagrammen gearbeitet wird – oder immer dann, wenn präzise Kontrolle erforderlich ist – verwenden Sie die Methoden des Axes-Objekts direkt: ax.set_xlabel(), ax.set_ylabel(), ax.set_title(), ax.legend() und ax.set_xticks().

import matplotlib.pyplot as plt

fig, ax = plt.subplots()

months = ['Jan', 'Feb', 'Mar', 'Apr']
revenue = [12000, 15000, 13000, 18000]
costs   = [8000,  9000, 10000, 11000]

ax.plot(months, revenue, marker='o', label='Revenue')
ax.plot(months, costs,   marker='s', label='Costs', linestyle='--')

ax.set_xlabel('Month', fontsize=12)
ax.set_ylabel('Amount ($)', fontsize=12)
ax.set_title('Revenue vs Costs — Q1', fontsize=14)
ax.legend(loc='upper left')

plt.tight_layout()
plt.show()

Bevorzugen Sie den objektorientierten Stil, wenn Ihr Skript mehr als eine Achse erstellt. Die plt.*-Kurzformen leiten an die aktuell aktiven Achsen weiter, was in Mehrtafel-Abbildungen schwer nachvollziehbare Fehler verursachen kann.

Kurzübersicht

ZielFunktion (pyplot)Methode (Axes)
X-Achsenbeschriftungplt.xlabel()ax.set_xlabel()
Y-Achsenbeschriftungplt.ylabel()ax.set_ylabel()
Diagrammtitelplt.title()ax.set_title()
Abbildungstitelplt.suptitle()fig.suptitle()
Legendeplt.legend()ax.legend()
X-Tick-Beschriftungenplt.xticks()ax.set_xticks() / ax.set_xticklabels()
Y-Tick-Beschriftungenplt.yticks()ax.set_yticks() / ax.set_yticklabels()
Freier Textplt.text()ax.text()
Anmerkung + Pfeilplt.annotate()ax.annotate()

Verwandte Kapitel

Was this page helpful?