Maison  >  Article  >  développement back-end  >  Voici quelques titres basés sur des questions qui correspondent au contenu de l’article : * Comment puis-je tracer une surface à partir d'une collection de points 3D à l'aide de la fonction « plot_surface » de Matplotlib ? * Tracer des surfaces dans Matplo

Voici quelques titres basés sur des questions qui correspondent au contenu de l’article : * Comment puis-je tracer une surface à partir d'une collection de points 3D à l'aide de la fonction « plot_surface » de Matplotlib ? * Tracer des surfaces dans Matplo

Barbara Streisand
Barbara Streisandoriginal
2024-10-26 18:33:02914parcourir

Here are a few question-based titles that fit the article content:

* How can I plot a surface from a collection of 3D points using Matplotlib's `plot_surface` function?
* Plotting Surfaces in Matplotlib: How do I prepare 3D point data for `plot_surface`

Traçage de surfaces dans Matplotlib

Lorsque vous travaillez avec une collection de points 3D représentés sous forme de 3 tuples, il n'est pas immédiatement clair si la fonction plot_surface est l'option idéale pour traçage de surfaces. Examinons les nuances et découvrons comment préparer les données pour cette fonction.

Comprendre plot_surface

plot_surface nécessite que X, Y et Z soient des tableaux 2D. Contrairement à un tracé de surface à partir d'une fonction f(x, y) -> z, où vous pouvez fournir un domaine de grille, un nuage de points présente un défi car il nécessite une triangulation.

Conversion des données

Étant donné que vos données sont une liste de points 3D, vous devrez convertissez-le dans un format que plot_surface peut comprendre. Une approche consiste à utiliser meshgrid pour créer un domaine de grille, comme démontré dans l'extrait de code suivant :

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

Maintenant, vous avez X, Y et Z dans le format de tableau 2D requis.

Traçage de surface

Une fois les données prêtes, vous pouvez procéder au traçage de la surface à l'aide de plot_surface :

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

Cela devrait générer une surface lisse passant par les points donnés.

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