Como criar um lote de superfície em Matplotlib

Suraj Joshi 6 fevereiro 2021
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.

Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn