Dessiner des objets plats dans un graphique 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

Matplotlib est une bibliothèque populaire de visualisation de données en Python. Elle fournit une large gamme de fonctions pour créer différents types de graphiques et diagrammes. L'une des fonctionnalités de Matplotlib est la capacité de dessiner des objets plats dans des graphiques 3D. Ce laboratoire vous guidera tout au long du processus de dessin d'objets plats dans des graphiques 3D à l'aide de Matplotlib.

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

Importation des bibliothèques requises

Nous allons commencer par importer les bibliothèques requises, qui sont Matplotlib, NumPy et mpl_toolkits.mplot3d.art3d.

import matplotlib.pyplot as plt
import numpy as np
import mpl_toolkits.mplot3d.art3d as art3d

Créer un graphique 3D

Nous allons créer un graphique 3D à l'aide de la fonction add_subplot de Matplotlib. Le paramètre projection est défini sur '3d' pour créer un graphique 3D.

fig = plt.figure()
ax = fig.add_subplot(projection='3d')

Dessiner un cercle sur le mur

Nous allons dessiner un cercle sur le "mur" x = 0 du graphique 3D à l'aide des fonctions Circle et pathpatch_2d_to_3d de Matplotlib.

p = Circle((5, 5), 3)
ax.add_patch(p)
art3d.pathpatch_2d_to_3d(p, z=0, zdir="x")

Etiqueter les axes

Nous allons étiqueter manuellement les axes à l'aide de la fonction text3d. Cette fonction prend la position du texte, le texte à afficher, l'axe à considérer comme la troisième dimension et d'autres paramètres.

def text3d(ax, xyz, s, zdir="z", size=None, angle=0, usetex=False, **kwargs):
    """
    Trace la chaîne *s* sur les axes *ax*, avec la position *xyz*, la taille *size*
    et l'angle de rotation *angle*. *zdir* indique l'axe qui doit être considéré
    comme la troisième dimension. *usetex* est un booléen indiquant si la chaîne
    doit être passée à travers un sous-processus LaTeX ou non. Tous les autres
    arguments clés sont transmis à `.transform_path`.

    Note: zdir affecte l'interprétation de xyz.
    """
    x, y, z = xyz
    if zdir == "y":
        xy1, z1 = (x, z), y
    elif zdir == "x":
        xy1, z1 = (y, z), x
    else:
        xy1, z1 = (x, y), z

    text_path = TextPath((0, 0), s, size=size, usetex=usetex)
    trans = Affine2D().rotate(angle).translate(xy1[0], xy1[1])

    p1 = PathPatch(trans.transform_path(text_path), **kwargs)
    ax.add_patch(p1)
    art3d.pathpatch_2d_to_3d(p1, z=z1, zdir=zdir)


text3d(ax, (4, -2, 0), "X-axis", zdir="z", size=.5, usetex=False,
       ec="none", fc="k")
text3d(ax, (12, 4, 0), "Y-axis", zdir="z", size=.5, usetex=False,
       angle=np.pi / 2, ec="none", fc="k")
text3d(ax, (12, 10, 4), "Z-axis", zdir="y", size=.5, usetex=False,
       angle=np.pi / 2, ec="none", fc="k")

Écrire une formule LaTeX sur le sol

Nous allons écrire une formule LaTeX sur le "sol" z = 0 du graphique 3D à l'aide de la fonction text3d.

text3d(ax, (1, 5, 0),
       r"$\displaystyle G_{\mu\nu} + \Lambda g_{\mu\nu} = "
       r"\frac{8\pi G}{c^4} T_{\mu\nu}  $",
       zdir="z", size=1, usetex=True,
       ec="none", fc="k")

Définir les limites et afficher le graphique

Nous allons définir les limites des axes x, y et z à l'aide des fonctions set_xlim, set_ylim et set_zlim de Matplotlib. Enfin, nous allons afficher le graphique 3D à l'aide de la fonction show de Matplotlib.

ax.set_xlim(0, 10)
ax.set_ylim(0, 10)
ax.set_zlim(0, 10)

plt.show()

Récapitulatif

Dans ce laboratoire, nous avons appris à dessiner des objets plats dans des graphiques 3D à l'aide de Matplotlib. Nous avons créé un graphique 3D, dessiné un cercle sur le mur, étiqueté les axes, écrit une formule LaTeX sur le sol et défini les limites des axes.