Comment créer un tracé de surface dans Matplotlib

Suraj Joshi 25 juin 2020
Comment créer un tracé de surface dans Matplotlib

Dans Matplotlib, nous utilisons la boîte à outils mplot3d pour l’analyse et la visualisation 3D qui contient des méthodes de traçage 3D construites au-dessus des fonctions 2D de Matplotlib. Nous pouvons créer des axes 3D en passant l’argument projection='3d' à l’une des fonctions de création des axes dans Matplotlib. Une fois les axes 3D initialisés, nous pouvons utiliser la méthode plot_surface() pour générer des tracés de surface.

Méthode Axes3D.plot_surface()

Nous pouvons créer un tracé de surface en utilisant la méthode Axes3D.plot_surface(X, Y, Z, *args, **kwargs) où X, Y et Z sont tous des tableaux 2D.

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

fig = plt.figure(figsize=(8, 6))
ax3d = plt.axes(projection="3d")

xdata = np.linspace(-3, 3, 100)
ydata = np.linspace(-3, 3, 100)
X, Y = np.meshgrid(xdata, ydata)
Z = 1 / (1 + np.exp(-X - Y))

ax3d = plt.axes(projection="3d")
ax3d.plot_surface(X, Y, Z, cmap="plasma")
ax3d.set_title("Surface Plot in Matplotlib")
ax3d.set_xlabel("X")
ax3d.set_ylabel("Y")
ax3d.set_zlabel("Z")

plt.show()

Tracé de surface dans matplotlib en utilisant plot_surface

Cela génère un tracé de surface dans l’espace 3D à l’aide de Matplotlib. Ici, le paramètre cmap est utilisé pour faire une bonne représentation de nos données dans l’espace colorimétrique 3D. La couleur du tracé varie avec la variation de la valeur de la variable dépendante.

Nous pouvons personnaliser le tracé en variant les paramètres suivants:

  • rstride: taille du pas de ligne dont la valeur par défaut est 10
  • cstride: Taille du pas de colonne dont la valeur par défaut est 10
  • color: Couleur de la surface
  • cmap: palette de couleurs de la surface
  • facecolors: Couleurs de visage pour chaque patch dans la surface
  • norm: une instance de Normalize pour mapper les valeurs aux couleurs
  • vmin: valeur minimale à mapper
  • vmax: valeur maximale à mapper
  • shadow: Faut-il ombrer les couleurs
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits import mplot3d

fig = plt.figure(figsize=(8, 6))
ax3d = plt.axes(projection="3d")

xdata = np.linspace(-3, 3, 100)
ydata = np.linspace(-3, 3, 100)
X, Y = np.meshgrid(xdata, ydata)
Z = 1 / (1 + np.exp(-X - Y))

ax3d = plt.axes(projection="3d")
surf = ax3d.plot_surface(X, Y, Z, rstride=7, cstride=7, cmap="viridis")
fig.colorbar(surf, ax=ax3d)
ax3d.set_title("Surface Plot in Matplotlib")
ax3d.set_xlabel("X")
ax3d.set_ylabel("Y")
ax3d.set_zlabel("Z")

plt.savefig("Customized Surface Plot.png")

plt.show()

Tracé de surface personnalisé

Dans cet exemple, nous ajoutons une barre de couleur dans la figure en utilisant la méthode colorbar() et en passant l’objet de tracé de surface à la méthode qui rend la figure plus informative.

Auteur: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn