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
| Ziel | Funktion (pyplot) | Methode (Axes) |
|---|---|---|
| X-Achsenbeschriftung | plt.xlabel() | ax.set_xlabel() |
| Y-Achsenbeschriftung | plt.ylabel() | ax.set_ylabel() |
| Diagrammtitel | plt.title() | ax.set_title() |
| Abbildungstitel | plt.suptitle() | fig.suptitle() |
| Legende | plt.legend() | ax.legend() |
| X-Tick-Beschriftungen | plt.xticks() | ax.set_xticks() / ax.set_xticklabels() |
| Y-Tick-Beschriftungen | plt.yticks() | ax.set_yticks() / ax.set_yticklabels() |
| Freier Text | plt.text() | ax.text() |
| Anmerkung + Pfeil | plt.annotate() | ax.annotate() |
Verwandte Kapitel
- Matplotlib Plotting — Linien und Punkte zeichnen
- Matplotlib Linie — Linienstil und Farboptionen
- Matplotlib Marker — Marker-Formen und -Größen
- Matplotlib Gitternetz — Gitternetzlinien zu einem Diagramm hinzufügen
- Matplotlib Subplots — Mehrtafel-Abbildungen