W3docs

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 matplotlib

Wenn 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 matplotlib

Die 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 plt

Der 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 np

Aufbau 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:

SchnittstelleVerwendungszweck
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:

ParameterBeispielwerteEffekt
color'red', 'steelblue', '#2ca02c'Linienfarbe
linewidth1, 2, 3Linienstä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 plt

Nächste Schritte

Jetzt, da Sie einen einfachen Plot erstellen können, erkunden Sie die speziellen Kapitel:

Was this page helpful?