Création de tracés de voxels 3D avec Matplotlib

PythonPythonBeginner
Pratiquer maintenant

This tutorial is from open-source community. Access the source code

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, vous allez apprendre à créer un tracé de voxels 3D en utilisant les coordonnées cylindriques dans Matplotlib. Le tracé démontrera comment utiliser les paramètres x, y et z de .Axes3D.voxels pour créer un tracé de voxels 3D.

Conseils sur la machine virtuelle

Une fois le démarrage de la machine virtuelle terminé, cliquez sur le coin supérieur gauche pour passer à l'onglet Carnet de notes pour accéder au carnet Jupyter pour pratiquer.

Parfois, vous devrez peut-être attendre quelques secondes pour que le carnet Jupyter ait fini de charger. La validation des opérations ne peut pas être automatisée en raison des limitations du carnet Jupyter.

Si vous rencontrez des problèmes pendant l'apprentissage, n'hésitez pas à demander à Labby. Donnez votre feedback après la session, et nous résoudrons rapidement le problème pour vous.

Importation des bibliothèques

La première étape consiste à importer les bibliothèques nécessaires pour ce laboratoire. Nous allons utiliser matplotlib.pyplot, numpy et matplotlib.colors.

import matplotlib.pyplot as plt
import numpy as np
import matplotlib.colors

Définir la fonction des points moyens

Ensuite, nous définissons une fonction midpoints pour calculer les points moyens d'un tableau de coordonnées. Cette fonction sera utilisée plus tard pour calculer les points moyens de r, theta et z.

def midpoints(x):
    sl = ()
    for i in range(x.ndim):
        x = (x[sl + np.index_exp[:-1]] + x[sl + np.index_exp[1:]]) / 2.0
        sl += np.index_exp[:]
    return x

Définir les coordonnées et les valeurs RGB

Dans cette étape, nous définissons les coordonnées r, theta et z, et attachons des valeurs RGB à chacune d'elles.

r, theta, z = np.mgrid[0:1:11j, 0:np.pi*2:25j, -0.5:0.5:11j]
x = r*np.cos(theta)
y = r*np.sin(theta)

rc, thetac, zc = midpoints(r), midpoints(theta), midpoints(z)

## définir un tore tordu autour de [0.7, *, 0]
sphere = (rc - 0.7)**2 + (zc + 0.2*np.cos(thetac*2))**2 < 0.2**2

## combiner les composantes de couleur
hsv = np.zeros(sphere.shape + (3,))
hsv[..., 0] = thetac / (np.pi*2)
hsv[..., 1] = rc
hsv[..., 2] = zc + 0.5
colors = matplotlib.colors.hsv_to_rgb(hsv)

Créer le tracé de voxels 3D

Maintenant, nous créons le tracé de voxels 3D en utilisant la fonction ax.voxels. Nous passons x, y, z et sphere en tant que paramètres. Nous ajoutons également facecolors et edgecolors en utilisant le tableau colors que nous avons défini précédemment.

ax = plt.figure().add_subplot(projection='3d')
ax.voxels(x, y, z, sphere,
          facecolors=colors,
          edgecolors=np.clip(2*colors - 0.5, 0, 1),  ## plus clair
          linewidth=0.5)

Afficher le tracé

Enfin, nous affichons le tracé en utilisant la fonction plt.show().

plt.show()

Sommaire

Dans ce laboratoire, vous avez appris à créer un tracé de voxels 3D en utilisant des coordonnées cylindriques dans Matplotlib. Vous avez également appris à définir des coordonnées et des valeurs RGB et à créer un tracé de voxels 3D en utilisant la fonction ax.voxels.