Einführung
In diesem Lab lernst du, wie du mithilfe von Zylinderm koordinaten in Matplotlib einen 3D-Voxelplot erstellen kannst. Der Plot zeigt, wie die x, y und z Parameter von .Axes3D.voxels verwendet werden, um einen 3D-Voxelplot zu erstellen.
Tipps für die VM
Nachdem der VM-Start abgeschlossen ist, klicke in der oberen linken Ecke, um zur Registerkarte Notebook zu wechseln und Jupyter Notebook für die Übung zu öffnen.
Manchmal musst du 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 du bei der Lernphase Probleme hast, kannst du Labby gerne fragen. Gib nach der Sitzung Feedback, und wir werden das Problem für dich prompt beheben.
Bibliotheken importieren
Der erste Schritt besteht darin, die für dieses Lab erforderlichen Bibliotheken zu importieren. Wir werden matplotlib.pyplot, numpy und matplotlib.colors verwenden.
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.colors
Mittelpunkte-Funktion definieren
Als nächstes definieren wir eine midpoints-Funktion, um die Mittelpunkte eines Arrays von Koordinaten zu berechnen. Diese Funktion wird später verwendet, um die Mittelpunkte von r, theta und z zu berechnen.
def midpoints(x):
sl = ()
for i in range(x.ndim):
x = (x[sl + np.index_exp[:-1]] + x[sl + np.index_exp[1:]]) / 2.0
sl += np.index_exp[:]
return x
Koordinaten und RGB-Werte definieren
In diesem Schritt definieren wir die Koordinaten r, theta und z und weisen jedem RGB-Werte zu.
r, theta, z = np.mgrid[0:1:11j, 0:np.pi*2:25j, -0.5:0.5:11j]
x = r*np.cos(theta)
y = r*np.sin(theta)
rc, thetac, zc = midpoints(r), midpoints(theta), midpoints(z)
## definiere einen wackligen Torus um [0.7, *, 0]
sphere = (rc - 0.7)**2 + (zc + 0.2*np.cos(thetac*2))**2 < 0.2**2
## kombinieren die Farbkomponenten
hsv = np.zeros(sphere.shape + (3,))
hsv[..., 0] = thetac / (np.pi*2)
hsv[..., 1] = rc
hsv[..., 2] = zc + 0.5
colors = matplotlib.colors.hsv_to_rgb(hsv)
Den 3D-Voxelplot erstellen
Jetzt erstellen wir den 3D-Voxelplot mithilfe der ax.voxels-Funktion. Wir übergeben x, y, z und sphere als Parameter. Wir fügen auch facecolors und edgecolors hinzu, indem wir das zuvor definierte colors-Array verwenden.
ax = plt.figure().add_subplot(projection='3d')
ax.voxels(x, y, z, sphere,
facecolors=colors,
edgecolors=np.clip(2*colors - 0.5, 0, 1), ## heller
linewidth=0.5)
Zeige den Plot an
Schließlich zeigen wir den Plot mit der plt.show()-Funktion an.
plt.show()
Zusammenfassung
In diesem Lab haben Sie gelernt, wie man in Matplotlib einen 3D-Voxelplot mit zylindrischen Koordinaten erstellt. Sie haben auch gelernt, wie man Koordinaten und RGB-Werte definiert und wie man einen 3D-Voxelplot mit der ax.voxels-Funktion erstellt.