Heim >Backend-Entwicklung >Python-Tutorial >Hier sind einige fragenbasierte Titel, die zum Artikelinhalt passen: * Wie kann ich mit der Funktion „plot_surface' von Matplotlib eine Oberfläche aus einer Sammlung von 3D-Punkten plotten? * Flächen in Matplo zeichnen
Beim Arbeiten mit einer Sammlung von 3D-Punkten, die als 3-Tupel dargestellt werden, ist nicht sofort klar, ob die Funktion plot_surface die ideale Option dafür ist Oberflächenplotierung. Lassen Sie uns in die Nuancen eintauchen und herausfinden, wie Sie die Daten für diese Funktion vorbereiten.
plot_surface erfordert, dass X, Y und Z 2D-Arrays sind. Im Gegensatz zu einem Oberflächendiagramm einer Funktion f(x, y) -> z, wo Sie eine Gitterdomäne bereitstellen können, stellt eine Punktwolke eine Herausforderung dar, da sie eine Triangulation erfordert.
Da Ihre Daten eine Liste von 3D-Punkten sind, müssen Sie dies tun Konvertieren Sie es in ein Format, das plot_surface verstehen kann. Ein Ansatz besteht darin, Meshgrid zum Erstellen einer Rasterdomäne zu verwenden, wie im folgenden Codeausschnitt gezeigt:
<code class="python">import numpy as np data = [(x1,y1,z1),(x2,y2,z2),.....,(xn,yn,zn)] x, y = zip(*data) # Extract x and y coordinates from the tuples X, Y = np.meshgrid(x, y) # Create a grid domain for X and Y # Convert the z coordinates into a 2D array zs = np.array([z for x, y, z in data]).reshape(X.shape)</code>
Jetzt haben Sie X, Y und Z im erforderlichen 2D-Array-Format.
Sobald die Daten bereit sind, können Sie mit dem Plotten der Oberfläche mit plot_surface fortfahren:
<code class="python">from mpl_toolkits.mplot3d import Axes3D # Enable 3D plotting import matplotlib.pyplot as plt fig = plt.figure() ax = fig.add_subplot(111, projection='3d') # Create a 3D subplot ax.plot_surface(X, Y, Z)</code>
Dies sollte eine glatte Oberfläche erzeugen, die durch die angegebenen Punkte verläuft.
Das obige ist der detaillierte Inhalt vonHier sind einige fragenbasierte Titel, die zum Artikelinhalt passen: * Wie kann ich mit der Funktion „plot_surface' von Matplotlib eine Oberfläche aus einer Sammlung von 3D-Punkten plotten? * Flächen in Matplo zeichnen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!