Maison  >  Article  >  développement back-end  >  Comment créer un tracé de surface dans Matplotlib avec une liste de points 3D ?

Comment créer un tracé de surface dans Matplotlib avec une liste de points 3D ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-26 14:55:30812parcourir

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

Tracés de surface dans Matplotlib

Lors de la création d'un tracé de surface, la fonction plot_surface nécessite des tableaux 2D comme arguments pour représenter les points dans l'espace 3D. Cependant, si vous ne disposez que d'une liste de points 3D, il y a des considérations spécifiques à prendre en compte.

Nuages ​​de points triangulés

Pour une liste de points 3D, plot_surface ne peut pas être utilisé directement en raison de l'ambiguïté de la triangulation des points dans une surface. Matplotlib ne fournit pas de méthode pour trianguler automatiquement des points dans une surface.

Approche alternative : surface basée sur une grille

Si vous n'avez pas de fonction représentant la surface, vous pouvez générer une surface basée sur une grille en utilisant une fonction comme fun(x, y). Dans cette approche, vous définissez une grille de points et calculez les valeurs z correspondantes à l'aide de la fonction donnée.

<code class="python">import numpy as np
import matplotlib.pyplot as plt

# Define the function
def fun(x, y):
    return x**2 + y

# Create a meshgrid
x = y = np.arange(-3.0, 3.0, 0.05)
X, Y = np.meshgrid(x, y)

# Compute the z-values
zs = np.array(fun(np.ravel(X), np.ravel(Y)))
Z = zs.reshape(X.shape)

# Create the surface plot
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(X, Y, Z)</code>

Cette approche vous permet de créer une surface lisse qui passe par les points 3D donnés et couvre la surface. toute l'étendue de la grille.

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