Animation de tracé 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

Ce laboratoire vous guidera sur la manière de créer une simple animation d'un tracé 3D en rotation autour des trois axes à l'aide de Matplotlib. Nous utiliserons un ensemble de données d'échantillonnage pour créer un cadre de fils de base, définir les étiquettes d'axe et faire tourner les axes.

Conseils sur la machine virtuelle

Une fois le démarrage de la machine virtuelle terminé, cliquez dans le coin supérieur gauche pour basculer vers 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 des commentaires après la session, et nous résoudrons rapidement le problème pour vous.

Importation des bibliothèques et de l'ensemble de données

Tout d'abord, nous devons importer les bibliothèques et l'ensemble de données nécessaires. Dans cet exemple, nous utiliserons les bibliothèques matplotlib et mpl_toolkits.mplot3d pour créer le tracé 3D, et la fonction axes3d.get_test_data() pour générer un ensemble de données d'échantillonnage.

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import axes3d

## Générer un ensemble de données d'échantillonnage
X, Y, Z = axes3d.get_test_data(0.05)

Créer un tracé 3D

Ensuite, nous allons créer un tracé 3D à l'aide des fonctions plt.figure() et fig.add_subplot(). Nous utiliserons également la fonction ax.plot_wireframe() pour tracer l'ensemble de données sous forme d'un cadre de fils.

## Créer un tracé 3D
fig = plt.figure()
ax = fig.add_subplot(projection='3d')

## Tracer le cadre de fils
ax.plot_wireframe(X, Y, Z, rstride=10, cstride=10)

Définir les étiquettes d'axe

Nous allons maintenant définir les étiquettes d'axe pour le tracé 3D à l'aide des fonctions ax.set_xlabel(), ax.set_ylabel() et ax.set_zlabel().

## Définir les étiquettes d'axe
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')

Faire tourner les axes et mettre à jour le tracé

Enfin, nous allons faire tourner les axes et mettre à jour le tracé à l'aide d'une boucle for qui parcourt une rotation complète de l'élévation, puis de l'azimut, du tangage et de tout. Nous utiliserons la fonction ax.view_init() pour mettre à jour la vue de l'axe et le titre, et les fonctions plt.title(), plt.draw() et plt.pause() pour afficher l'animation.

## Faire tourner les axes et mettre à jour le tracé
for angle in range(0, 360*4 + 1):
    ## Normaliser l'angle dans la plage [-180, 180] pour l'affichage
    angle_norm = (angle + 180) % 360 - 180

    ## Parcourir une rotation complète de l'élévation, puis de l'azimut, du tangage et de tout
    elev = azim = roll = 0
    if angle <= 360:
        elev = angle_norm
    elif angle <= 360*2:
        azim = angle_norm
    elif angle <= 360*3:
        roll = angle_norm
    else:
        elev = azim = roll = angle_norm

    ## Mettre à jour la vue de l'axe et le titre
    ax.view_init(elev, azim, roll)
    plt.title('Elevation: %d°, Azimuth: %d°, Roll: %d°' % (elev, azim, roll))

    ## Afficher l'animation
    plt.draw()
    plt.pause(.001)

Sommaire

Dans ce laboratoire, nous avons appris à créer une animation simple d'un tracé 3D tournant autour des trois axes à l'aide de Matplotlib. Nous avons utilisé un ensemble de données d'échantillonnage pour créer un cadre de fils de base, définir les étiquettes d'axe et faire tourner les axes. Nous avons également appris à utiliser les fonctions ax.view_init(), plt.title(), plt.draw() et plt.pause() pour mettre à jour le tracé et afficher l'animation.