Cómo crear un diagrama de superficie en Matplotlib

En Matplotlib, utilizamos el kit de herramientas mplot3d para el análisis y visualización en 3D que contiene métodos de trazado en 3D creados sobre las funciones 2D de Matplotlib. Podemos crear ejes en 3-D pasando el argumento projection = "3d" a cualquiera de las funciones de creación de ejes en Matplotlib. Una vez que se inicializan los ejes tridimensionales, podemos usar el método plot_surface() para generar gráficos de superficie.

Método Axes3D.plot_surface()

Podemos crear un diagrama de superficie usando el método Axes3D.plot_surface(X, Y, Z, *args, **kwargs) donde X, Y y Z son matrices 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()

Trazado de superficie en matplotlib usando plot_surface

Esto genera un diagrama de superficie en el espacio 3D usando Matplotlib. Aquí el parámetro cmap se usa para hacer una buena representación de nuestros datos en el espacio de color 3D. El color del gráfico varía con la variación en el valor de la variable dependiente.

Podemos personalizar la trama variando los siguientes parámetros:

  • rstride: tamaño de paso de fila cuyo valor predeterminado es 10
  • cstride: tamaño de paso de columna cuyo valor predeterminado es 10
  • color: color de la superficie
  • cmap: mapa de colores de la superficie
  • facecolors: colores de la cara para cada parche en la superficie
  • norm: una instancia de Normalizar para asignar valores a colores
  • vmin: valor mínimo para mapear
  • vmax: valor máximo para mapear
  • shade: si sombrear los colores de la cara
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()

Parcela de superficie personalizada

En este ejemplo, agregamos una barra de color en la figura usando el método colorbar() y pasando el objeto de trazado de superficie al método que hace que la figura sea más informativa.