Crea un grafico di superficie in Matplotlib

In Matplotlib, usiamo il toolkit mplot3d per l’analisi e la visualizzazione 3-D che contiene metodi di stampa 3-D costruiti sopra le funzioni 2-D di Matplotlib. Possiamo creare assi 3-D passando l’argomento projection='3d' a una qualsiasi delle funzioni di creazione degli assi in Matplotlib. Una volta inizializzati gli assi 3D, possiamo usare il metodo plot_surface() per generare grafici di superficie.

Metodo Axes3D.plot_surface()

Possiamo creare un grafico di superficie usando il metodo Axes3D.plot_surface(X, Y, Z, *args, **kwargs) dove X, Y e Z sono tutti array 2-D.

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()

Surface Plot in matplotlib utilizzando plot_surface

Questo genera un grafico di superficie nello spazio 3D usando Matplotlib. Qui il parametro cmap viene utilizzato per fare una buona rappresentazione dei nostri dati nello spazio colore 3D. Il colore della trama varia al variare del valore della variabile dipendente.

Possiamo personalizzare la trama variando i seguenti parametri:

  • rstride: dimensione del passo della riga il cui valore predefinito è 10
  • cstride: dimensione del passo della colonna il cui valore predefinito è 10
  • color: colore della superficie
  • cmap: mappa dei colori della superficie
  • facecolors: colori del viso per ogni patch sulla superficie
  • norm: un’istanza di Normalizza per mappare i valori ai colori
  • vmin: valore minimo da mappare
  • vmax: valore massimo da mappare
  • shade: se ombreggiare i colori del viso
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()

Grafico di superficie personalizzato

In questo esempio, aggiungiamo una barra dei colori nella figura utilizzando il metodo colorbar() e passando l’oggetto del grafico di superficie al metodo che rende la figura più informativa.