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.
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.
É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.
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!