Como criar um lote de superfície em Matplotlib
Na Matplotlib, utilizamos o kit de ferramentas mplot3d
para análise e visualização em 3-D que contém métodos de plotagem em 3-D construídos sobre as funções 2-D da Matplotlib. Podemos criar eixos tridimensionais passando o argumento projection='3d'
para qualquer uma das funções de criação dos eixos em Matplotlib. Uma vez inicializados os eixos 3-D, podemos utilizar o método plot_surface()
para gerar gráficos de superfície.
Axes3D.plot_surface()
Método
Podemos criar um gráfico de superfície utilizando o método Axes3D.plot_surface(X, Y, Z, *args, **kwargs)
onde X, Y, e Z são arrays 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()
Isto gera uma trama de superfície no espaço 3D utilizando o Matplotlib. Aqui o parâmetro cmap
é utilizado para fazer uma boa representação de nossos dados no espaço de cores 3D. A cor da trama é variada com variação no valor da variável dependente.
Podemos personalizar a trama variando de acordo com os parâmetros:
rstride
: Tamanho do passo da linha cujo valor padrão é 10tride
: tamanho do passo da coluna cujo valor padrão é 10color
: da superfíciecmap
: Colormap de superfíciefacecolores
: Cores de face para cada mancha na superfícienorm
: para mapear valores para coresvmin
: Valor mínimo a mapearvmax
: Valor máximo a mapearshade
: se sombrear as cores da fachada
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()
Neste exemplo, adicionamos uma barra colorida na figura, utilizando o método colorbar()
e passando o objeto de superfície do gráfico para o método que torna a figura mais informativa.
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn