Comment créer des surfaces 3D lisses à partir de données dispersées à l'aide de Matplotlib ?

Barbara Streisand
Libérer: 2024-10-26 07:11:02
original
142 Les gens l'ont consulté

How to Create Smooth 3D Surfaces from Scattered Data Using Matplotlib?

Création de tracés de surface avec Matplotlib

Considérant une liste de 3 tuples désignant des points dans l'espace 3D, la tâche est de générer une surface couvrant ces points.

L'utilisation de plot_surface du package mplot3d nécessite des données d'entrée sous la forme de tableaux 2D pour X, Y et Z. Pour transformer la structure de données donnée, il y a certaines considérations à prendre en compte.

Dans le cas de Les surfaces, contrairement aux tracés linéaires, vous devez définir une grille couvrant le domaine à l'aide de tableaux 2D. Lorsqu’on travaille uniquement avec une liste de points 3D, la triangulation devient essentielle. En effet, il existe plusieurs triangulations possibles pour un nuage de points donné.

Pour une surface lisse, l'approche suivante peut être adoptée :

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

def fun(x, y):
    return x**2 + y

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)
zs = np.array(fun(np.ravel(X), np.ravel(Y)))
Z = zs.reshape(X.shape)

ax.plot_surface(X, Y, Z)

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

plt.show()</code>
Copier après la connexion

Ce code définit une grille à l'aide de meshgrid, génère les valeurs Z correspondantes et crée le tracé de surface à l'aide de plot_surface. La surface résultante fournit une représentation fluide des données sous-jacentes.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!