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()
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 10cstride
: tamaño de paso de columna cuyo valor predeterminado es 10color
: color de la superficiecmap
: mapa de colores de la superficiefacecolors
: colores de la cara para cada parche en la superficienorm
: una instancia de Normalizar para asignar valores a coloresvmin
: valor mínimo para mapearvmax
: valor máximo para mapearshade
: 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()
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.
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn