Estou aprendendo a usar o mplot3d para produzir bons gráficos de dados 3D e até agora estou muito feliz. O que estou tentando fazer no momento é uma pequena animação de uma superfície rotativa. Para isso, preciso definir uma posição de câmera para a projeção em 3D. Eu acho que isso deve ser possível, pois uma superfície pode ser girada usando o mouse ao usar o matplotlib interativamente. Mas como posso fazer isso a partir de um script? Encontrei muitas transformações em mpl_toolkits.mplot3d.proj3d, mas não consegui descobrir como usá-las para o meu propósito e não encontrei nenhum exemplo para o que estou tentando fazer.
python
matplotlib
mplot3d
Andreas Bleuler
fonte
fonte
%matplotlib notebook
Respostas:
Por "posição da câmera", parece que você deseja ajustar a elevação e o ângulo de azimute que você usa para visualizar o gráfico 3D. Você pode definir isso com
ax.view_init
. Eu usei o script abaixo para criar o enredo primeiro, depois determinei uma boa elevação, ouelev
, a partir da qual visualizar o enredo. Em seguida, ajustei o ângulo do azimute, ouazim
, para variar 360 graus ao redor da plotagem, salvando a figura em cada instância (e observando qual ângulo de azimute salvei a plotagem). Para uma panorâmica da câmera mais complicada, você pode ajustar a elevação e o ângulo para obter o efeito desejado.fonte
ax.elev
eax.azim
. Você também pode ter escritoax.azim = ii
ou até mesmoax.azim += 1
para obter o mesmo efeito.O que seria útil seria aplicar a posição da câmera a um novo gráfico. Então, traço, movo a trama com o mouse alterando a distância. Em seguida, tente replicar a vista, incluindo a distância em outro gráfico. Acho que axx.ax.get_axes () me fornece um objeto com o antigo .azim e .elev.
EM PYTHON ...
Mais tarde gráfico 3d ...
EDIT 1 ... OK, a posição da câmera é a maneira errada de pensar em relação ao valor .dist. Ele roda em cima de tudo como uma espécie de multiplicador escalar de hackey para todo o gráfico.
Isso funciona para a ampliação / zoom da visualização:
Gráfico posterior ...
fonte