Einführung
In diesem Lab wird gezeigt, wie man benutzerdefiniertes Hillshading in einem 3D-Oberflächenplot mit Python Matplotlib verwendet. Hillshading ist die Verwendung von Licht und Schatten, um die Wahrnehmung der Tiefe und Relief in einem 3D-Plot zu verbessern. Indem wir das Hillshading anpassen, können wir einen visuell ansprechenderen und informativeren Plot erstellen.
Tipps für die VM
Nachdem der Start der VM abgeschlossen ist, klicken Sie in der oberen linken Ecke, um zur Registerkarte Notebook zu wechseln und Jupyter Notebook für die Übung zu nutzen.
Manchmal müssen Sie einige Sekunden warten, bis Jupyter Notebook vollständig geladen ist. Die Validierung von Vorgängen kann aufgrund von 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 ab, und wir werden das Problem für Sie prompt beheben.
Daten laden und formatieren
In diesem Schritt laden und formatieren wir die Daten für den 3D-Oberflächenplot. Wir verwenden einen Beispiel-Datensatz namens "jacksboro_fault_dem.npz".
import matplotlib.pyplot as plt
import numpy as np
from matplotlib import cbook, cm
from matplotlib.colors import LightSource
## Daten laden und formatieren
dem = cbook.get_sample_data('jacksboro_fault_dem.npz')
z = dem['elevation']
nrows, ncols = z.shape
x = np.linspace(dem['xmin'], dem['xmax'], ncols)
y = np.linspace(dem['ymin'], dem['ymax'], nrows)
x, y = np.meshgrid(x, y)
Region = np.s_[5:50, 5:50]
x, y, z = x[region], y[region], z[region]
Plot einrichten
In diesem Schritt richten wir den Plot für den 3D-Oberflächenplot ein. Wir verwenden ein LightSource-Objekt, um das Hillshading zu personalisieren.
## Plot einrichten
fig, ax = plt.subplots(subplot_kw=dict(projection='3d'))
ls = LightSource(270, 45)
## Um einen benutzerdefinierten Hillshading-Modus zu verwenden, überschreiben Sie das integrierte Shading und übergeben
## die rgb-Farben der geschatteten Fläche, berechnet aus "shade".
rgb = ls.shade(z, cmap=cm.gist_earth, vert_exag=0.1, blend_mode='soft')
surf = ax.plot_surface(x, y, z, rstride=1, cstride=1, facecolors=rgb,
linewidth=0, antialiased=False, shade=False)
plt.show()
Hillshading anpassen
In diesem Schritt passen wir das Hillshading an, indem wir das integrierte Shading überschreiben und die RGB-Farben der geschatteten Fläche, die aus "shade" berechnet wurden, übergeben.
## Plot einrichten
fig, ax = plt.subplots(subplot_kw=dict(projection='3d'))
ls = LightSource(270, 45)
## Um einen benutzerdefinierten Hillshading-Modus zu verwenden, überschreiben Sie das integrierte Shading und übergeben
## die rgb-Farben der geschatteten Fläche, berechnet aus "shade".
rgb = ls.shade(z, cmap=cm.gist_earth, vert_exag=0.1, blend_mode='soft')
surf = ax.plot_surface(x, y, z, rstride=1, cstride=1, facecolors=rgb,
linewidth=0, antialiased=False, shade=False)
plt.show()
Überprüfen und überarbeiten
Überprüfen Sie den Code und führen Sie alle erforderlichen Änderungen durch. Stellen Sie sicher, dass der Code korrekt ist und gut kommentiert ist.
Zusammenfassung
In diesem Lab haben wir gelernt, wie man in einem 3D-Oberflächenplot mit Python Matplotlib benutzerdefiniertes Hillshading verwendet. Indem wir das Hillshading anpassen, konnten wir einen visuell ansprechenderen und informativeren Plot erstellen.