3D Voxel-Graphen mit RGB 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 Matplotlib einen 3D-Voxelplot mit RGB-Farben erstellst. Voxelplots sind eine Möglichkeit, 3D-Daten auf einem 2D-Diagramm darzustellen, indem Würfel verwendet werden, um die Datenpunkte zu repräsentieren. Die RGB-Farben werden verwendet, um die verschiedenen Werte der Daten zu repräsentieren.

Tipps für die VM

Nachdem der Start der VM 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 während des Lernens Probleme hast, kannst du Labby gerne fragen. Gib nach der Sitzung Feedback, und wir werden das Problem für dich prompt beheben.

Bibliotheken importieren

Bevor wir den Plot erstellen, müssen wir die erforderlichen Bibliotheken importieren. In diesem Fall werden wir Matplotlib und NumPy verwenden.

import matplotlib.pyplot as plt
import numpy as np

Definition der Koordinaten und Farben

Als nächstes müssen wir die Koordinaten und Farben für den Plot definieren. In diesem Beispiel verwenden wir die Funktion np.indices, um ein 17x17x17-Gitter von Werten für die RGB-Farben zu erstellen.

r, g, b = np.indices((17, 17, 17)) / 16.0

Wir definieren auch eine Funktion midpoints, um die Mittelpunkte zwischen den Werten im Gitter zu finden. Dies wird später verwendet, um die Kugel zu erstellen.

def midpoints(x):
    sl = ()
    for _ 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

Erstellen der Kugel

Wir werden nun in der Grafik eine Kugel erstellen, indem wir eine Bedingung für die RGB-Werte definieren, die sich innerhalb eines bestimmten Abstands vom Zentrum der Grafik befinden.

rc = midpoints(r)
gc = midpoints(g)
bc = midpoints(b)

sphere = (rc - 0.5)**2 + (gc - 0.5)**2 + (bc - 0.5)**2 < 0.5**2

Zusammenführen der Farben

Wir werden nun die RGB-Farbbestandteile zu einem einzelnen Array der Form (17, 17, 17, 3) zusammenführen.

colors = np.zeros(sphere.shape + (3,))
colors[..., 0] = rc
colors[..., 1] = gc
colors[..., 2] = bc

Zeichnen des Voxel-Graphen

Schließlich können wir den Voxel-Graphen mit der Funktion ax.voxels zeichnen. Wir übergeben die RGB-Werte, die Bedingung für die Kugel, die Farben der Vorderflächen, die Kantenfarben und die Linienbreite.

ax = plt.figure().add_subplot(projection='3d')
ax.voxels(r, g, b, sphere,
          facecolors=colors,
          edgecolors=np.clip(2*colors - 0.5, 0, 1),  ## heller
          linewidth=0.5)
ax.set(xlabel='r', ylabel='g', zlabel='b')
ax.set_aspect('equal')
plt.show()

Zusammenfassung

In diesem Lab haben wir gelernt, wie man mit Matplotlib einen 3D-Voxel-Graphen mit RGB-Farben erstellt. Wir haben die erforderlichen Bibliotheken importiert, die Koordinaten und Farben definiert, eine Kugel erstellt, die Farben kombiniert und den Voxel-Graphen geplottet. Voxel-Graphen sind eine nützliche Methode, um 3D-Daten auf einem 2D-Graphen darzustellen und können mit verschiedenen Farben und Formen personalisiert werden, um verschiedene Arten von Daten darzustellen.