Heim > Backend-Entwicklung > Python-Tutorial > Wie zeichne ich eine Oberfläche aus einer Liste von 3D-Punkten in Matplotlib?

Wie zeichne ich eine Oberfläche aus einer Liste von 3D-Punkten in Matplotlib?

DDD
Freigeben: 2024-10-26 06:37:03
Original
627 Leute haben es durchsucht

How to Plot a Surface from a List of 3D Points in Matplotlib?

Oberflächenplotierung in Matplotlib

Bei der Arbeit mit räumlichen Daten kann die Generierung von Oberflächen wertvolle Erkenntnisse liefern. In Matplotlib wird zu diesem Zweck die Funktion plot_surface verwendet. Es erfordert jedoch Eingaben in Form von 2D-Arrays, wodurch es nicht mit einer Liste von 3-Tupeln kompatibel ist, die 3D-Punkte darstellen.

Datentransformation

Zum Plotten einer Oberfläche Aus 3 Tupeln müssen wir die Daten in das erforderliche Format umwandeln. Da den gegebenen Daten jede zugrunde liegende Funktion f(x, y) fehlt, müssen wir die Punkte triangulieren, um eine Oberfläche zu erstellen.

Triangulation und Transformation

Für den Triangulationsprozess , können wir die Funktion [triangulate_points](https://matplotlib.org/stable/gallery/mplot3d/triangulation_demo.html) verwenden. Es generiert eine Liste von Dreiecken, die die bereitgestellten Punkte verbinden und so effektiv ein Oberflächennetz erzeugen.

Nach der Triangulation können wir die erforderlichen 2D-Arrays für X, Y und Z erhalten. Diese Arrays stellen die Koordinaten der Eckpunkte dar für jedes Dreieck.

Plotten der Oberfläche

Mit den transformierten Daten können wir jetzt plot_surface aufrufen:

<code class="python">import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d.art3d import Poly3DCollection

# List of 3-tuples representing points
data = [(x1, y1, z1), (x2, y2, z2), ...]

# Triangulate the points
triangles = triangulate_points(data)

# Extract 2D arrays for X, Y, and Z
X, Y, Z = zip(*triangles)

# Plot the surface
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(X, Y, Z)

ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_zlabel('Z Label')

plt.show()</code>
Nach dem Login kopieren

Dieses Skript generiert eine glatte Oberfläche, die die angegebenen 3D-Punkte abdeckt.

Das obige ist der detaillierte Inhalt vonWie zeichne ich eine Oberfläche aus einer Liste von 3D-Punkten in Matplotlib?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage