Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich mit Matplotlib ein 3D-Oberflächendiagramm aus einer Sammlung von Punkten erstellen?

Wie kann ich mit Matplotlib ein 3D-Oberflächendiagramm aus einer Sammlung von Punkten erstellen?

Susan Sarandon
Susan SarandonOriginal
2024-10-28 03:45:30496Durchsuche

How can I create a 3D surface plot from a collection of points using Matplotlib?

Plotten von Oberflächen mit Punkten im 3D-Raum mit Matplotlib

In diesem Artikel untersuchen wir, wie man ein Oberflächendiagramm erstellt, das eine Sammlung von umfasst Punkte im dreidimensionalen Raum mithilfe der Matplotlib-Bibliothek von Python, insbesondere des Moduls mplot3d.

Die Funktion plot_surface in mplot3d erfordert zweidimensionale Arrays für X-, Y- und Z-Argumente und keine Liste von 3-Tupeln wie du hast. Daher besteht der erste Schritt darin, Ihre Daten im erforderlichen Format aufzubereiten.

Im Gegensatz zu Liniendiagrammen benötigen Sie für Oberflächen ein 2D-Array-Gitter, das die Domäne darstellt. Die Verwendung diskreter Punkte wie der 3-Tupel, die Sie haben, stellt eine Herausforderung dar, da es mehrere potenzielle Triangulationen gibt, die eine Oberfläche erzeugen können.

Betrachten Sie diesen Python-Code, der eine glatte Oberfläche generiert, wobei f(x, y) = x^2 y:

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

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

x = y = np.arange(-3.0, 3.0, 0.05)
X, Y = np.meshgrid(x, y)

# Calculate the Z values for each point in X and Y
zs = np.array(fun(np.ravel(X), np.ravel(Y)))
Z = zs.reshape(X.shape)

# Plot the surface
ax.plot_surface(X, Y, Z)

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

plt.show()</code>

In diesem Beispiel sind X und Y 2D-Arrays, die die Domäne darstellen, und Z ist das entsprechende Wertearray für jeden Punkt. Die Funktion plot_surface verwendet diese Arrays, um eine glatte Oberfläche zu erstellen. Dieser Ansatz eignet sich für Oberflächen, die durch eine mathematische Funktion definiert sind.

Wenn Ihre Daten jedoch ausschließlich aus diskreten 3D-Punkten bestehen, müssen Sie möglicherweise andere Optionen in Betracht ziehen.

Das obige ist der detaillierte Inhalt vonWie kann ich mit Matplotlib ein 3D-Oberflächendiagramm aus einer Sammlung von Punkten erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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