Tracé de surface de boîte 3D

Beginner

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

Introduction

Ce laboratoire vous guidera dans la création d'un tracé de surface de boîte 3D à l'aide de Python et de Matplotlib. Nous définirons les dimensions, créerons des données fictives et traçons des surfaces de contour. Nous définirons les limites du tracé, traçons les bords, définirons les étiquettes et les graduations de l'axe z, définirons le zoom et l'angle de vue et ajouterons une barre de couleur.

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 au carnet Jupyter pour pratiquer.

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

Définir les dimensions

Définissez les dimensions de la boîte en créant trois variables pour la longueur de chaque côté : Nx, Ny et Nz. Ensuite, créez trois maillages pour X, Y et Z à l'aide de la méthode arange de numpy. Enfin, définissez la valeur négative pour Z pour créer une boîte au lieu d'un plan.

import matplotlib.pyplot as plt
import numpy as np

## Définir les dimensions
Nx, Ny, Nz = 100, 300, 500
X, Y, Z = np.meshgrid(np.arange(Nx), np.arange(Ny), -np.arange(Nz))

Créer des données fictives

Créez des données fictives pour le tracé en utilisant une formule pour calculer les données en fonction des valeurs de X, Y et Z. Nous ajouterons 1 au résultat pour vous assurer que la valeur minimale est supérieure à zéro.

## Créer des données fictives
data = (((X+100)**2 + (Y-20)**2 + 2*Z)/1000+1)

Tracer des surfaces de contour

Tracez des surfaces de contour pour la boîte en utilisant la méthode contourf pour chaque surface. Utilisez des paramètres appropriés pour zdir et offset.

kw = {
    'vmin': data.min(),
    'vmax': data.max(),
    'levels': np.linspace(data.min(), data.max(), 10),
}

## Créez une figure avec un axe 3D
fig = plt.figure(figsize=(5, 4))
ax = fig.add_subplot(111, projection='3d')

## Tracez des surfaces de contour
_ = ax.contourf(
    X[:, :, 0], Y[:, :, 0], data[:, :, 0],
    zdir='z', offset=0, **kw
)
_ = ax.contourf(
    X[0, :, :], data[0, :, :], Z[0, :, :],
    zdir='y', offset=0, **kw
)
C = ax.contourf(
    data[:, -1, :], Y[:, -1, :], Z[:, -1, :],
    zdir='x', offset=X.max(), **kw
)

Définir les limites du tracé

Définissez les limites du tracé en utilisant la méthode set et en passant les limites des coordonnées X, Y et Z.

## Définir les limites du tracé à partir des limites des coordonnées
xmin, xmax = X.min(), X.max()
ymin, ymax = Y.min(), Y.max()
zmin, zmax = Z.min(), Z.max()
ax.set(xlim=[xmin, xmax], ylim=[ymin, ymax], zlim=[zmin, zmax])

Tracer les bords

Tracez les bords en utilisant la méthode plot. Nous tracerons trois lignes le long des coordonnées X et Y, et une ligne le long des coordonnées X et Z.

## Tracer les bords
edges_kw = dict(color='0.4', linewidth=1, zorder=1e3)
ax.plot([xmax, xmax], [ymin, ymax], 0, **edges_kw)
ax.plot([xmin, xmax], [ymin, ymin], 0, **edges_kw)
ax.plot([xmax, xmax], [ymin, ymin], [zmin, zmax], **edges_kw)

Définir les étiquettes et les graduations de Z

Définissez les étiquettes et les graduations de Z en utilisant la méthode set. Nous définirons les étiquettes pour les coordonnées X, Y et Z, et définirons les graduations de Z pour montrer la profondeur de la boîte.

## Définir les étiquettes et les graduations de Z
ax.set(
    xlabel='X [km]',
    ylabel='Y [km]',
    zlabel='Z [m]',
    zticks=[0, -150, -300, -450],
)

Régler le zoom et l'angle de vue

Réglez le zoom et l'angle de vue en utilisant les méthodes view_init et set_box_aspect. Nous définirons l'angle de vue à 40 degrés dans la direction X et -30 degrés dans la direction Y, et le zoom à 0,9.

## Régler le zoom et l'angle de vue
ax.view_init(40, -30, 0)
ax.set_box_aspect(None, zoom=0.9)

Ajouter une barre de couleur

Ajoutez une barre de couleur en utilisant la méthode colorbar. Nous définirons les paramètres fraction et pad pour ajuster l'emplacement de la barre de couleur, et définirons l'étiquette pour montrer le nom et les unités des données.

## Colorbar
fig.colorbar(C, ax=ax, fraction=0.02, pad=0.1, label='Name [units]')

Sommaire

Dans ce laboratoire, nous avons créé un tracé de surface de boîte 3D à l'aide de Python et de Matplotlib. Nous avons défini les dimensions, créé des données fictives et tracé des surfaces de contour. Nous avons défini les limites du tracé, tracé les bords, défini les étiquettes et les graduations de Z, défini le zoom et l'angle de vue, et ajouté une barre de couleur. Ce tracé peut être utilisé pour visualiser des données 3D et explorer les relations entre les variables.