HOWTO · Matplotlib
So erstellen Sie Konturdiagramme in Matplotlib
Erstellen Sie Linien- und gefüllte Konturdiagramme in Matplotlib mit einem NumPy-Gitter, einem Skalarfeld und einer Farbskala.
Auf dieser Seite
Mit Matplotlib zeichnet contour() Linien gleicher Werte in einem zweidimensionalen Skalarfeld; contourf() füllt die Bereiche zwischen diesen Linien. NumPy kann in beiden Fällen das Koordinatengitter erstellen und die darzustellenden Werte berechnen. Eine Farbskala zeigt, welche Werte den Farben entsprechen.
Mit der Methode contour() ein Konturdiagramm in Matplotlib erstellen
Ein Konturdiagramm stellt ein Skalarfeld auf einer zweidimensionalen Ebene dar. Die Arrays x und y geben die horizontalen und vertikalen Koordinaten an, während z den Skalarwert für jedes Koordinatenpaar enthält. Jede Konturlinie verbindet Punkte mit demselben z-Wert. Matplotlib verwendet die entsprechenden Einträge der drei Arrays gemeinsam: x[i, j] und y[i, j] legen die Position eines Punkts fest, und z[i, j] liefert seinen Wert. Die Koordinatengitter und das Wertearray müssen daher kompatible zweidimensionale Formen haben.
Im Beispiel erstellt numpy.linspace() auf jeder Achse 500 Koordinaten von -2 bis 2. np.meshgrid() erweitert diese eindimensionalen Koordinaten zu passenden zweidimensionalen Arrays. Mit z = np.sin(x) + np.cos(y) wird für jede Position im Gitter ein Wert berechnet. Weitere Informationen zum Erstellen von Koordinatengittern finden Sie unter Methode np.meshgrid().
Das folgende Beispiel erstellt das Gitter, zeichnet die Isolinien, fügt eine Farbskala hinzu und öffnet die Abbildung. Der Code ist zum Ausführen gedacht; diesem Entwurf liegt jedoch kein Laufzeitergebnis bei.
import matplotlib.pyplot as plot
import numpy as np
x_values = np.linspace(-2, 2, 500)
y_values = np.linspace(-2, 2, 500)
x, y = np.meshgrid(x_values, y_values)
z = np.sin(x) + np.cos(y)
plot.contour(x, y, z)
plot.colorbar()
plot.show()
Die ersten beiden Argumente von contour() sind die Koordinatengitter, das dritte ist das Skalarfeld. Die Funktion akzeptiert weitere optionale Argumente, darunter levels, mit dem sich festlegen lässt, wo Konturlinien gezeichnet werden. Wird dieses Argument weggelassen, wählt Matplotlib Stufen anhand des Datenbereichs. plot.colorbar() fügt eine Skala hinzu, anhand derer sich die durch die Farben dargestellten Feldwerte ablesen lassen. Das ist hilfreich, wenn Sie eine Isolinie interpretieren oder Werte an verschiedenen Stellen vergleichen möchten; die Achsen zeigen weiterhin die Koordinaten x und y.
Die Methode contourf() in Matplotlib verwenden
Verwenden Sie contourf() für ein gefülltes Konturdiagramm: Die Methode färbt die Bereiche zwischen den Konturstufen ein, während contour() die Konturlinien zeichnet. Die Eingaben haben bei beiden Methoden dieselbe Bedeutung. Daher können Sie das Gitter und das Skalarfeld aus dem ersten Beispiel wiederverwenden. Ein gefülltes Diagramm erleichtert den Vergleich größerer Wertebereiche; die Farbskala ordnet den Farben Zahlenwerte zu. Das vollständige Beispiel setzt außerdem levels=30 und fügt eine Farbskala hinzu. Es ist zum Ausführen gedacht, diesem Entwurf liegt jedoch kein Laufzeitergebnis bei.
import matplotlib.pyplot as plot
import numpy as np
x_values = np.linspace(-2, 2, 500)
y_values = np.linspace(-2, 2, 500)
x, y = np.meshgrid(x_values, y_values)
z = np.sin(x) + np.cos(y)
filled = plot.contourf(x, y, z, levels=30, vmin=-1, vmax=0.5)
plot.colorbar(filled)
plot.show()
levels legt die Konturstufen fest und bestimmt damit, wie das Feld in farbige Bereiche unterteilt wird. vmin und vmax setzen dagegen die Grenzen der Farbnormalisierung. Sie entfernen keine Werte aus z und wählen auch keine Konturstufen aus. Werte unterhalb oder oberhalb dieser Grenzen bleiben dargestellt und werden den Unter- beziehungsweise Überlauffarben der Farbkarte zugeordnet. Bei der Standardfarbkarte sind dies deren Endfarben, sofern keine eigenen Unter- oder Überlauffarben festgelegt wurden.
In diesem Beispiel bleiben die Werte aus z auch dann Teil des gefüllten Konturdiagramms, wenn sie außerhalb des Farbbereichs von -1 bis 0,5 liegen. Verwenden Sie levels, um die Unterteilung in Konturstufen zu ändern, und vmin oder vmax, um anzupassen, wie Werte auf die Farbskala abgebildet werden.