Heim >Backend-Entwicklung >Python-Tutorial >Wie erstelle ich mit Matplotlib glatte 3D-Oberflächen aus verstreuten Daten?
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>
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!