Antes de começarmos a criar gráficos 3D com a biblioteca Matplotlib precisamos habilitar o módulo tollkit da biblioteca. Para habilitar esse módulo precisamos importar a biblioteca mplot3d. Não se preocupe se você não instalou essa biblioteca, por padrão ela já vem com a biblioteca matplotlib. Apenas uma ressalva quanto a isso: verifique se a versão do Matplotlib é igual ou superior à versão 1.0.
Quando o módulo já tiver sido importado, é fácil criar um gráfico 3D apenas passando o valor '3d' para o parâmetro projection de qualquer método para a criação de eixos do matplotlib. Veja um exemplo abaixo:
Exemplo Python
from mpl_toolkits import mplot3d import numpy as np import matplotlib.pyplot as plt fig = plt.figure() eixos = plt.axes(projection="3d") plt.show()
Com os nossos eixos criados já podemos começar a fazer desenhos nesses eixos. Os métodos para criar gráficos em três dimensões são muito similares aos métodos para criar gráficos em 2D, a diferença é a terminação do método que termina com 3d. Outra diferença é o número de argumentos, ao invés de passar apenas dois argumentos passaremos três, um para cada eixo. Os outros parâmetros permanecem os mesmo, como os parâmetros para alterar a cor e a linha dos gráficos. Veja um exemplo abaixo:
Exemplo Python
from mpl_toolkits import mplot3d import numpy as np import matplotlib.pyplot as plt fig = plt.figure() eixos = plt.axes(projection="3d") z_line = np.linspace(0, 15, 1000) x_line = np.cos(z_line) y_line = np.sin(z_line) eixos.plot3D(x_line, y_line, z_line, 'gray') pontos_z = 15 * np.random.random(100) pontos_x = np.cos(pontos_z) + 0.1 * np.random.randn(100) pontos_y = np.sin(pontos_z) + 0.1 * np.random.randn(100) eixos.scatter3D(pontos_x, pontos_y, pontos_z, c=pontos_z, cmap='viridis'); plt.show()
Assim como os gráficos 2D, podemos mover o gráfico 3D, dar zoom ou mudar o ângulo de visão.
Gráficos de superfície
Os gráficos de superfície são usados para visualizar um conjunto de três variáveis num cenário 3D. Com esse tipo de gráfico é possível visualizar como o valor de um eixo em relação aos outros dois. Veja um exemplo abaixo:
Exemplo Python
from mpl_toolkits import mplot3d import numpy as np import matplotlib.pyplot as plt fig = plt.figure() ax = plt.axes(projection="3d") ax = plt.axes(projection='3d') def funcao_z(x, y): return np.sin(np.sqrt(x ** 2 + y ** 2)) x = np.linspace(-6, 6, 30) y = np.linspace(-6, 6, 30) X, Y = np.meshgrid(x, y) Z = funcao_z(X, Y) ax.plot_wireframe(X, Y, Z, color='green') ax.set_xlabel('X') ax.set_ylabel('Y') ax.set_zlabel('Z') ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap='viridis', edgecolor='none') ax.set_title('Gráfico de superfícies'); plt.show()
0 comentários:
Postar um comentário