Wie erstelle ich mit Matplotlib glatte 3D-Oberflächen aus verstreuten Daten?

Barbara Streisand
Freigeben: 2024-10-26 07:11:02
Original
142 Leute haben es durchsucht

How to Create Smooth 3D Surfaces from Scattered Data Using Matplotlib?

Erstellen von Oberflächendiagrammen mit Matplotlib

Anhand einer Liste von 3-Tupeln, die Punkte im 3D-Raum bezeichnen, besteht die Aufgabe darin, eine Oberfläche zu generieren, die diese Punkte abdeckt.

Die Verwendung von plot_surface aus dem mplot3d-Paket erfordert Eingabedaten in Form von 2D-Arrays für X, Y und Z. Um die gegebene Datenstruktur zu transformieren, müssen bestimmte Überlegungen angestellt werden.

Im Fall von Bei Oberflächen müssen Sie im Gegensatz zu Liniendiagrammen mithilfe von 2D-Arrays ein Gitter definieren, das die Domäne abdeckt. Wenn Sie nur mit einer Liste von 3D-Punkten arbeiten, ist die Triangulation unerlässlich. Dies liegt daran, dass es für eine bestimmte Punktwolke mehrere mögliche Triangulationen gibt.

Für eine glatte Oberfläche kann der folgende Ansatz gewählt werden:

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

def fun(x, y):
    return x**2 + y

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)
zs = np.array(fun(np.ravel(X), np.ravel(Y)))
Z = zs.reshape(X.shape)

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

Dieser Code definiert ein Gitter mithilfe von Meshgrid und generiert die entsprechenden Z-Werte und erstellt das Oberflächendiagramm mit plot_surface. Die resultierende Oberfläche bietet eine glatte Darstellung der zugrunde liegenden Daten.

Das obige ist der detaillierte Inhalt vonWie erstelle ich mit Matplotlib glatte 3D-Oberflächen aus verstreuten Daten?. 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!