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>
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!