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.