Maison  >  Article  >  développement back-end  >  Comment puis-je créer un tracé de surface 3D à partir d'une collection de points à l'aide de Matplotlib ?

Comment puis-je créer un tracé de surface 3D à partir d'une collection de points à l'aide de Matplotlib ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-28 03:45:30392parcourir

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

Tracer des surfaces avec des points dans un espace 3D à l'aide de Matplotlib

Dans cet article, nous explorons comment créer un tracé de surface qui englobe une collection de points dans un espace tridimensionnel à l'aide de la bibliothèque Matplotlib de Python, en particulier son module mplot3d.

La fonction plot_surface dans mplot3d nécessite des tableaux bidimensionnels pour les arguments X, Y et Z, plutôt qu'une liste de 3 tuples comme tu as. Par conséquent, la première étape consiste à préparer vos données dans le format nécessaire.

Pour les surfaces, contrairement aux tracés linéaires, vous aurez besoin d'une grille matricielle 2D représentant le domaine. L'utilisation de points discrets, comme les 3 tuples que vous avez, présente un défi car il existe de multiples triangulations potentielles qui peuvent créer une surface.

Considérez ce code Python qui génère une surface lisse, où 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>

Dans cet exemple, X et Y sont des tableaux 2D représentant le domaine, et Z est le tableau de valeurs correspondant pour chaque point. La fonction plot_surface utilise ces tableaux pour créer une surface lisse. Cette approche convient aux surfaces définies par une fonction mathématique.

Cependant, si vos données sont constituées uniquement de points 3D discrets, vous devrez peut-être envisager d'autres options.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn