Plans de vue principales 3D

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 tutoriel, nous allons apprendre à générer un graphique 3D « déplié » à l'aide de Matplotlib qui montre chacun des plans de vue principaux 3D. Nous allons également étiqueter les angles d'altitude, d'azimut et de tangage requis pour chaque vue. Cette image peut être imprimée et pliée pour former une boîte dont chaque plan forme un côté de la boîte.

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 d'adresses pour accéder à Jupyter Notebook pour pratiquer.

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

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églerons rapidement le problème pour vous.

Importez les bibliothèques nécessaires

Nous commençons par importer les bibliothèques nécessaires pour ce tutoriel, qui inclut Matplotlib.

import matplotlib.pyplot as plt

Définissez une fonction pour annoter les axes

Nous définissons une fonction annotate_axes que nous utiliserons plus tard pour étiqueter chacun des plans de vue principaux 3D avec leurs angles respectifs.

def annotate_axes(ax, text, fontsize=18):
    ax.text(x=0.5, y=0.5, z=0.5, s=text,
            va="center", ha="center", fontsize=fontsize, color="black")

Définissez les plans de vue principaux 3D et leurs angles

Nous définissons les plans de vue principaux 3D et leurs angles d'altitude, d'azimut et de tangage correspondants.

views = [('XY',   (90, -90, 0)),
         ('XZ',    (0, -90, 0)),
         ('YZ',    (0,   0, 0)),
         ('-XY', (-90,  90, 0)),
         ('-XZ',   (0,  90, 0)),
         ('-YZ',   (0, 180, 0))]

Définissez la disposition du graphique 3D

Nous définissons la disposition du graphique 3D à l'aide d'une liste de listes. Le '.' dans la liste représente un sous-graphique vide.

layout = [['XY',  '.',   'L',   '.'],
          ['XZ', 'YZ', '-XZ', '-YZ'],
          ['.',   '.', '-XY',   '.']]

Créez le graphique 3D

Nous utilisons subplot_mosaic pour créer le graphique 3D sur la base de la disposition définie dans l'étape 4.

fig, axd = plt.subplot_mosaic(layout, subplot_kw={'projection': '3d'},
                              figsize=(12, 8.5))

Définissez les propriétés de chaque plan de vue principal 3D

Nous définissons les propriétés de chaque plan de vue principal 3D, y compris les étiquettes pour les axes x, y et z, le type de projection et les angles de vue.

for plane, angles in views:
    axd[plane].set_xlabel('x')
    axd[plane].set_ylabel('y')
    axd[plane].set_zlabel('z')
    axd[plane].set_proj_type('ortho')
    axd[plane].view_init(elev=angles[0], azim=angles[1], roll=angles[2])
    axd[plane].set_box_aspect(None, zoom=1.25)

Étiquetez chaque plan de vue principal 3D

Nous utilisons la fonction annotate_axes définie dans l'étape 2 pour étiqueter chaque plan de vue principal 3D avec ses angles respectifs.

for plane, angles in views:
    label = f'{plane}\n{angles}'
    annotate_axes(axd[plane], label, fontsize=14)

Personnalisez les étiquettes d'échelonnement et les étiquettes d'axe pour chaque plan de vue principale 3D

Nous personnalisons les étiquettes d'échelonnement et les étiquettes d'axe pour chaque plan de vue principale 3D pour supprimer toute étiquette inutile.

for plane in ('XY', '-XY'):
    axd[plane].set_zticklabels([])
    axd[plane].set_zlabel('')
for plane in ('XZ', '-XZ'):
    axd[plane].set_yticklabels([])
    axd[plane].set_ylabel('')
for plane in ('YZ', '-YZ'):
    axd[plane].set_xticklabels([])
    axd[plane].set_xlabel('')

Ajoutez une étiquette au sous-graphique central

Nous ajoutons une étiquette au sous-graphique central pour indiquer que ceci est un graphique de plans de vue principales 3D.

label ='mplot3d primary view planes\n' + 'ax.view_init(elev, azim, roll)'
annotate_axes(axd['L'], label, fontsize=18)
axd['L'].set_axis_off()

Affichez le tracé 3D

Nous affichons le tracé 3D à l'aide de plt.show().

plt.show()

Sommaire

Dans ce tutoriel, nous avons appris à générer un tracé 3D « déplié » qui montre chacun des plans de vue principales 3D à l'aide de Matplotlib. Nous avons également étiqueté les angles d'altitude, d'azimut et de tangage requis pour chaque vue et personnalisé les étiquettes d'échelonnement et les étiquettes d'axe pour chaque plan de vue principale 3D. Cette image peut être imprimée et pliée pour former une boîte où chaque plan forme un côté de la boîte.