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.