Maison  >  Article  >  développement back-end  >  Comment tracer une surface à partir d'une liste de points 3D dans Matplotlib ?

Comment tracer une surface à partir d'une liste de points 3D dans Matplotlib ?

DDD
DDDoriginal
2024-10-26 06:37:03480parcourir

How to Plot a Surface from a List of 3D Points in Matplotlib?

Traçage de surfaces dans Matplotlib

Lorsque vous travaillez avec des données spatiales, la génération de surfaces peut fournir des informations précieuses. Dans Matplotlib, la fonction plot_surface est utilisée à cet effet. Cependant, il nécessite une saisie sous forme de tableaux 2D, ce qui le rend incompatible avec une liste de 3-uplets représentant des points 3D.

Transformation des données

Pour tracer une surface à partir de 3 tuples, nous devons transformer les données dans le format requis. Étant donné que les données fournies n'ont aucune fonction sous-jacente f(x, y), nous devons trianguler les points pour créer une surface.

Triangulation et transformation

Pour le processus de triangulation , nous pouvons utiliser la fonction [triangulate_points](https://matplotlib.org/stable/gallery/mplot3d/triangulation_demo.html). Il génère une liste de triangles qui relient les points fournis, créant ainsi un maillage de surface.

Une fois triangulés, nous pouvons obtenir les tableaux 2D requis pour X, Y et Z. Ces tableaux représentent les coordonnées des sommets. pour chaque triangle.

Tracer la surface

Avec les données transformées, nous pouvons maintenant invoquer plot_surface :

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

# List of 3-tuples representing points
data = [(x1, y1, z1), (x2, y2, z2), ...]

# Triangulate the points
triangles = triangulate_points(data)

# Extract 2D arrays for X, Y, and Z
X, Y, Z = zip(*triangles)

# Plot the surface
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(X, Y, Z)

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

plt.show()</code>

Ce script générera un surface lisse qui couvre les points 3D 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