Matplotlib – Erste Schritte
Matplotlib installieren, pyplot importieren und das erste Liniendiagramm mit Beschriftungen, Farben und Anpassungsoptionen erstellen.
Diese Seite erklärt alles, was Sie brauchen, um mit Matplotlib loszulegen: wie Sie es installieren, importieren, wie die Bibliothek aufgebaut ist und wie Sie Ihr erstes Diagramm erstellen und anpassen. Am Ende haben Sie ein funktionierendes Skript, das ein vollständig beschriftetes Liniendiagramm erzeugt.
Matplotlib installieren
Matplotlib ist nicht Teil der Python-Standardbibliothek und muss daher vor dem Import installiert werden. Verwenden Sie pip, den Paketmanager von Python:
pip install matplotlibWenn Sie in einer virtuellen Umgebung arbeiten (empfohlen), aktivieren Sie diese zuerst und führen Sie dann den obigen Befehl aus. So bestätigen Sie, dass die Installation erfolgreich war, und prüfen die Version:
python -m pip show matplotlibDie Ausgabe sollte in etwa so aussehen:
Name: matplotlib
Version: 3.9.x
...Matplotlib erfordert Python 3.9 oder neuer ab der Release-Reihe 3.9.
Matplotlib importieren
Matplotlib ist in mehrere Unterpakete unterteilt. Für die alltägliche Arbeit benötigen Sie nur das Modul pyplot, das üblicherweise unter dem Alias plt importiert wird:
import matplotlib.pyplot as pltDer Alias plt ist die universelle Konvention in der Python-Community. Er sorgt dafür, dass Ihr Code konsistent mit Tutorials, Dokumentationen und Codebeispielen im Web ist.
Wenn Sie auch numerische Arrays benötigen (was beim Erzeugen von Daten zum Plotten häufig vorkommt), importieren Sie NumPy gleichzeitig:
import matplotlib.pyplot as plt
import numpy as npAufbau von Matplotlib
Das Verständnis der zweischichtigen Struktur von Matplotlib verhindert viele Missverständnisse:
- Figure — der übergeordnete Container. Stellen Sie ihn sich als Leinwand oder Fenster vor. Eine Figure kann eine oder mehrere Axes enthalten.
- Axes — ein einzelner Plotbereich mit eigener x-Achse, y-Achse, Titel und Daten. Das Wort „Axes" bedeutet nicht nur die Achsenlinien, sondern den gesamten Plotbereich.
Matplotlib bietet zwei Schnittstellen für die Arbeit mit diesen Objekten:
| Schnittstelle | Verwendungszweck |
|---|---|
| pyplot (Zustandsmaschine) | Schnelle, interaktive Skripte und Notebooks |
| Objektorientiert (OO) | Mehrteilige Abbildungen, wiederverwendbare Funktionen, Produktionscode |
Die pyplot-Schnittstelle verwaltet die aktuelle Figure und Axes automatisch. Die OO-Schnittstelle gibt Ihnen explizite Handles, mit denen Sie jedes Objekt präzise steuern können. Beide erzeugen identische Ausgaben; der Unterschied liegt in der Codeorganisation.
Ihr erstes Diagramm erstellen
Die Funktion plt.plot() zeichnet eine Linie durch eine Folge von (x, y)-Paaren. Übergeben Sie zwei gleich lange Listen — eine für x-Werte und eine für y-Werte:
import matplotlib.pyplot as plt
x = [1, 2, 3, 4]
y = [1, 4, 9, 16]
plt.plot(x, y)
plt.show()plt.show() sendet die Abbildung auf den Bildschirm. In einem Terminal-Skript pausiert die Ausführung, bis Sie das Plotfenster schließen. In einem Jupyter-Notebook erscheint der Plot inline, und plt.show() ist optional.
Beschriftungen und einen Titel hinzufügen
Ein Plot ohne Beschriftungen ist schwer zu interpretieren. Fügen Sie Achsenbeschriftungen und einen Titel mit drei einzeiligen Aufrufen hinzu:
import matplotlib.pyplot as plt
x = [1, 2, 3, 4]
y = [1, 4, 9, 16]
plt.plot(x, y)
plt.xlabel('x')
plt.ylabel('y = x²')
plt.title('Square Numbers')
plt.show()plt.xlabel()— Beschriftung der horizontalen Achse.plt.ylabel()— Beschriftung der vertikalen Achse.plt.title()— Titel, der oberhalb des Plots angezeigt wird.
Linienfarbe und -stil anpassen
Übergeben Sie Schlüsselwortargumente an plt.plot(), um das Erscheinungsbild der Linie zu ändern:
import matplotlib.pyplot as plt
x = [1, 2, 3, 4]
y = [1, 4, 9, 16]
plt.plot(x, y, color='steelblue', linewidth=2, linestyle='--')
plt.xlabel('x')
plt.ylabel('y = x²')
plt.title('Square Numbers')
plt.show()Häufig verwendete Optionen:
| Parameter | Beispielwerte | Effekt |
|---|---|---|
color | 'red', 'steelblue', '#2ca02c' | Linienfarbe |
linewidth | 1, 2, 3 | Linienstärke in Punkten |
linestyle | '-', '--', ':', '-.' | Durchgezogen, gestrichelt, gepunktet, Strich-Punkt |
Sie können auch einen Format-String als drittes Positionsargument verwenden. 'r--' bedeutet rot gestrichelt, 'bs' bedeutet blaue Quadrate, 'g^' bedeutet grüne Dreiecke:
plt.plot(x, y, 'r--')Achsengrenzen festlegen
Standardmäßig wählt Matplotlib Achsengrenzen, die zu den Daten passen. Sie können diese überschreiben:
import matplotlib.pyplot as plt
x = [1, 2, 3, 4]
y = [1, 4, 9, 16]
plt.plot(x, y)
plt.xlim(0, 5)
plt.ylim(0, 20)
plt.show()plt.xlim(min, max) und plt.ylim(min, max) legen den sichtbaren Bereich jeder Achse fest. Dies ist nützlich, wenn Sie einen bestimmten Bereich hervorheben oder die Achsen über mehrere Plots hinweg konsistent halten möchten.
Mehrere Linien plotten
Rufen Sie plt.plot() mehrmals vor plt.show() auf, um mehrere Linien auf denselben Axes zu überlagern. Fügen Sie jedem Aufruf ein label-Argument hinzu und rufen Sie dann plt.legend() auf, um die Legende anzuzeigen:
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y_sq = [1, 4, 9, 16, 25]
y_cb = [1, 8, 27, 64, 125]
plt.plot(x, y_sq, color='steelblue', label='x²')
plt.plot(x, y_cb, color='tomato', label='x³')
plt.xlabel('x')
plt.ylabel('y')
plt.title('Comparing Growth')
plt.legend()
plt.show()plt.legend() liest den label-String aus jedem plot()-Aufruf und erstellt die Legende automatisch. Platzieren Sie ihn vor plt.show().
Die objektorientierte Schnittstelle
Für alles, was über ein einzelnes einfaches Diagramm hinausgeht, ist die OO-Schnittstelle klarer und einfacher zu warten. Erstellen Sie eine Figure und eine oder mehrere Axes mit plt.subplots(), und rufen Sie dann Methoden direkt auf dem ax-Objekt auf:
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y_sq = [1, 4, 9, 16, 25]
y_cb = [1, 8, 27, 64, 125]
fig, ax = plt.subplots()
ax.plot(x, y_sq, color='steelblue', label='x²')
ax.plot(x, y_cb, color='tomato', label='x³')
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_title('Comparing Growth')
ax.legend()
ax.grid(True)
plt.show()Die OO-Methodennamen spiegeln die pyplot-Funktionen mit dem Präfix set_ wider: plt.xlabel() wird zu ax.set_xlabel(), plt.title() wird zu ax.set_title() usw. Das explizite ax-Handle macht eindeutig, welchen Plot Sie bearbeiten — unverzichtbar, wenn eine Figure mehrere Subplots enthält.
Einen Plot in eine Datei speichern
Rufen Sie plt.savefig() anstelle von (oder zusätzlich zu) plt.show() auf, um die Abbildung auf der Festplatte zu speichern:
import matplotlib.pyplot as plt
x = [1, 2, 3, 4]
y = [1, 4, 9, 16]
plt.plot(x, y, color='steelblue', linewidth=2)
plt.xlabel('x')
plt.ylabel('y = x²')
plt.title('Square Numbers')
plt.savefig('square_numbers.png', dpi=150, bbox_inches='tight')Matplotlib leitet das Dateiformat aus der Dateiendung ab. Gängige Formate: .png, .pdf, .svg, .jpg. Das Argument dpi steuert die Auflösung (150–300 dpi ist typisch für Berichte). bbox_inches='tight' schneidet Leerraumränder ab.
Häufige Fallstricke
Rufen Sie plt.show() nur einmal auf. Mehrmaliges Aufrufen in einem Skript kann leere Abbildungen erzeugen, weil Matplotlib die aktuelle Abbildung nach der Anzeige löscht.
Die Reihenfolge ist bei pyplot wichtig. Anpassungsaufrufe (plt.xlabel(), plt.title() usw.) müssen vor plt.show() stehen.
Eine Abbildung wiederverwenden. Wenn Sie in einer Schleife einen Plot erstellen und vergessen, ihn zu löschen, sammeln sich Daten aus vorherigen Iterationen an. Rufen Sie plt.clf() (Abbildung löschen) oder plt.close() zwischen den Iterationen auf, oder erstellen Sie jedes Mal ein neues fig, ax = plt.subplots().
Nicht-interaktive Backends. Auf Servern ohne Display (CI, Docker-Container) kann plt.show() einen Fehler auslösen. Legen Sie das Backend fest, bevor Sie pyplot importieren:
import matplotlib
matplotlib.use('Agg') # non-interactive PNG backend
import matplotlib.pyplot as pltNächste Schritte
Jetzt, da Sie einen einfachen Plot erstellen können, erkunden Sie die speziellen Kapitel:
- Matplotlib Pyplot — vertiefte Einführung in pyplot-Funktionen und Plottypen
- Matplotlib Line Plots — Linien, Marker und Flächenfüllungen gestalten
- Matplotlib Labels — Achsenbeschriftungen, Titel, Anmerkungen
- Matplotlib Markers — Datenpunkt-Marker und ihre Stile
- Matplotlib Grid — Gitterlinien hinzufügen und konfigurieren
- Matplotlib Subplots — mehrere Plots in einer Abbildung anordnen
- Matplotlib Bar Charts — vertikale und horizontale Balkendiagramme
- Matplotlib Scatter Plots — Streudiagramme für zwei Variablen
- Matplotlib Histograms — Häufigkeitsverteilungen
- Matplotlib Pie Charts — proportionale Daten