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

Plot_surface em matplotlib utilizando plot_surface

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 é 10
  • tride : tamanho do passo da coluna cujo valor padrão é 10
  • color: da superfície
  • cmap : Colormap de superfície
  • facecolores : Cores de face para cada mancha na superfície
  • norm : para mapear valores para cores
  • vmin : Valor mínimo a mapear
  • vmax : Valor máximo a mapear
  • shade : 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()

Lote de Superfície Personalizado

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.