Einführung
Dieses Lab ist ein Schritt-für-Schritt-Tutorial zum Erstellen von Konturplots mit Python Matplotlib. Konturplots eignen sich zur Visualisierung dreidimensionaler Daten in zwei Dimensionen. In diesem Tutorial werden wir einfache Konturplots, Konturen auf einem Bild mit einer Farbskala für die Konturen und markierte Konturen veranschaulichen.
Tipps für die VM
Nachdem der VM-Start abgeschlossen ist, klicken Sie in der oberen linken Ecke, um zur Registerkarte Notebook zu wechseln und Jupyter Notebook für die Übung zu öffnen.
Manchmal müssen Sie einige Sekunden warten, bis Jupyter Notebook vollständig geladen ist. Die Validierung von Vorgängen kann aufgrund der Einschränkungen in Jupyter Notebook nicht automatisiert werden.
Wenn Sie bei der Lernphase Probleme haben, können Sie Labby gerne fragen. Geben Sie nach der Sitzung Feedback, und wir werden das Problem für Sie prompt beheben.
Importieren der erforderlichen Bibliotheken
Bevor wir beginnen, unseren Konturplot zu erstellen, müssen wir die erforderlichen Bibliotheken importieren. Für dieses Tutorial werden wir numpy und matplotlib verwenden.
import matplotlib.pyplot as plt
import numpy as np
Daten erstellen
Wir müssen die Daten erstellen, die wir zum Erstellen des Konturplots verwenden werden. In diesem Beispiel werden wir zwei 2D-Gaußfunktionen erstellen.
delta = 0.025
x = np.arange(-3.0, 3.0, delta)
y = np.arange(-2.0, 2.0, delta)
X, Y = np.meshgrid(x, y)
Z1 = np.exp(-X**2 - Y**2)
Z2 = np.exp(-(X - 1)**2 - (Y - 1)**2)
Z = (Z1 - Z2) * 2
Erstellen eines einfachen Konturplots mit Beschriftungen
Jetzt, wo wir unsere Daten haben, können wir einen einfachen Konturplot mit Beschriftungen in Standardfarben erstellen.
fig, ax = plt.subplots()
CS = ax.contour(X, Y, Z)
ax.clabel(CS, inline=True, fontsize=10)
ax.set_title('Simplest default with labels')
Konturbeschriftungen manuell platzieren
Wir können auch Konturbeschriftungen manuell platzieren, indem wir eine Liste von Positionen (in Datenkoordinaten) angeben.
fig, ax = plt.subplots()
CS = ax.contour(X, Y, Z)
manual_locations = [
(-1, -1.4), (-0.62, -0.7), (-2, 0.5), (1.7, 1.2), (2.0, 1.4), (2.4, 1.7)]
ax.clabel(CS, inline=True, fontsize=10, manual=manual_locations)
ax.set_title('labels at selected locations')
Setzen von Konturfarben
Wir können erzwingen, dass alle Konturen die gleiche Farbe haben, oder negative Konturen als durchgezogen statt gestrichelt festlegen.
fig, ax = plt.subplots()
CS = ax.contour(X, Y, Z, 6, colors='k') ## Negative contours default to dashed.
ax.clabel(CS, fontsize=9, inline=True)
ax.set_title('Single color - negative contours dashed')
plt.rcParams['contour.negative_linestyle'] = 'solid'
fig, ax = plt.subplots()
CS = ax.contour(X, Y, Z, 6, colors='k') ## Negative contours default to dashed.
ax.clabel(CS, fontsize=9, inline=True)
ax.set_title('Single color - negative contours solid')
Manuell Konturfarben angeben
Wir können auch die Farben der Kontur manuell angeben.
fig, ax = plt.subplots()
CS = ax.contour(X, Y, Z, 6,
linewidths=np.arange(.5, 4,.5),
colors=('r', 'green', 'blue', (1, 1, 0), '#afeeee', '0.5'),
)
ax.clabel(CS, fontsize=9, inline=True)
ax.set_title('Crazy lines')
Verwenden einer Farbskala, um Konturfarben anzugeben
Wir können eine Farbskala verwenden, um die Farben für die Konturlinien anzugeben.
fig, ax = plt.subplots()
im = ax.imshow(Z, interpolation='bilinear', origin='lower',
cmap=cm.gray, extent=(-3, 3, -2, 2))
levels = np.arange(-1.2, 1.6, 0.2)
CS = ax.contour(Z, levels, origin='lower', cmap='flag', extend='both',
linewidths=2, extent=(-3, 3, -2, 2))
## Thicken the zero contour.
CS.collections[6].set_linewidth(4)
ax.clabel(CS, levels[1::2], ## label every second level
inline=True, fmt='%1.1f', fontsize=14)
## make a colorbar for the contour lines
CB = fig.colorbar(CS, shrink=0.8)
ax.set_title('Lines with colorbar')
## We can still add a colorbar for the image, too.
CBI = fig.colorbar(im, orientation='horizontal', shrink=0.8)
## This makes the original colorbar look a bit out of place,
## so let's improve its position.
l, b, w, h = ax.get_position().bounds
ll, bb, ww, hh = CB.ax.get_position().bounds
CB.ax.set_position([ll, b + 0.1*h, ww, h*0.8])
Zusammenfassung
In diesem Lab haben wir gelernt, wie man mit Python Matplotlib Konturplots erstellt. Wir haben dabei die Erstellung eines einfachen Konturplots mit Beschriftungen, das manuelle Platzieren von Konturbeschriftungen, das Setzen von Konturfarben, das manuelle Angeben von Konturfarben und das Verwenden einer Farbskala, um Konturfarben anzugeben, behandelt.