Introdução
Este laboratório irá guiá-lo sobre como criar uma animação simples de um gráfico 3D rotativo em torno dos três eixos usando Matplotlib. Usaremos um conjunto de dados de exemplo para criar um wireframe básico, definir rótulos de eixos e rotacionar os eixos.
Dicas da VM
Após a inicialização da VM, clique no canto superior esquerdo para mudar para a aba Notebook e acessar o Jupyter Notebook para praticar.
Às vezes, pode ser necessário aguardar alguns segundos para que o Jupyter Notebook termine de carregar. A validação das operações não pode ser automatizada devido a limitações no Jupyter Notebook.
Se você enfrentar problemas durante o aprendizado, sinta-se à vontade para perguntar ao Labby. Forneça feedback após a sessão, e resolveremos o problema prontamente para você.
Importar Bibliotecas e Conjunto de Dados
Primeiramente, precisamos importar as bibliotecas e o conjunto de dados necessários. Neste exemplo, usaremos as bibliotecas matplotlib e mpl_toolkits.mplot3d para criar o gráfico 3D, e a função axes3d.get_test_data() para gerar um conjunto de dados de exemplo.
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import axes3d
## Generate sample dataset
X, Y, Z = axes3d.get_test_data(0.05)
Criar um Gráfico 3D
Em seguida, criaremos um gráfico 3D usando as funções plt.figure() e fig.add_subplot(). Também usaremos a função ax.plot_wireframe() para plotar o conjunto de dados como um wireframe.
## Create 3D plot
fig = plt.figure()
ax = fig.add_subplot(projection='3d')
## Plot wireframe
ax.plot_wireframe(X, Y, Z, rstride=10, cstride=10)
Definir Rótulos dos Eixos
Agora, definiremos os rótulos dos eixos para o gráfico 3D usando as funções ax.set_xlabel(), ax.set_ylabel() e ax.set_zlabel().
## Set axis labels
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')
Rotacionar os Eixos e Atualizar o Gráfico
Finalmente, rotacionaremos os eixos e atualizaremos o gráfico usando um loop for que percorre uma rotação completa de elevação (elevation), depois azimute (azimuth), rotação (roll) e todos. Usaremos a função ax.view_init() para atualizar a visualização e o título do eixo, e as funções plt.title(), plt.draw() e plt.pause() para exibir a animação.
## Rotate the axes and update the plot
for angle in range(0, 360*4 + 1):
## Normalize the angle to the range [-180, 180] for display
angle_norm = (angle + 180) % 360 - 180
## Cycle through a full rotation of elevation, then azimuth, roll, and all
elev = azim = roll = 0
if angle <= 360:
elev = angle_norm
elif angle <= 360*2:
azim = angle_norm
elif angle <= 360*3:
roll = angle_norm
else:
elev = azim = roll = angle_norm
## Update the axis view and title
ax.view_init(elev, azim, roll)
plt.title('Elevation: %d°, Azimuth: %d°, Roll: %d°' % (elev, azim, roll))
## Display animation
plt.draw()
plt.pause(.001)
Resumo
Neste laboratório, aprendemos como criar uma animação simples de um gráfico 3D rotativo em torno dos três eixos usando Matplotlib. Usamos um conjunto de dados de amostra para criar um wireframe básico, definir rótulos de eixos e rotacionar os eixos. Também aprendemos como usar as funções ax.view_init(), plt.title(), plt.draw() e plt.pause() para atualizar o gráfico e exibir a animação.