3D-Voxelplots in Matplotlib erstellen

PythonPythonBeginner
Jetzt üben

This tutorial is from open-source community. Access the source code

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

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.