问题描述
我正在学习如何使用mplot3d生成漂亮的3d数据图,到目前为止,我还很高兴.我现在想做的是旋转表面的动画效果.为此,我需要为3D投影设置相机位置.我猜这一定是有可能的,因为在交互使用matplotlib时,可以使用鼠标旋转表面.但是如何从脚本中做到这一点呢?我在mpl_toolkits.mplot3d.proj3d中发现了很多转换,但是我找不到如何使用这些转换的目的,也没有找到任何尝试执行的示例.
I'm learning how to use mplot3d to produce nice plots of 3d data and I'm pretty happy so far. What I am trying to do at the moment is a little animation of a rotating surface. For that purpose, I need to set a camera position for the 3D projection. I guess this must be possible since a surface can be rotated using the mouse when using matplotlib interactively. But how can I do this from a script?I found a lot of transforms in mpl_toolkits.mplot3d.proj3d but I could not find out how to use these for my purpose and I didn't find any example for what I'm trying to do.
推荐答案
通过摄像机位置",听起来好像您想调整用于查看3D图的仰角和方位角.您可以使用 ax.view_init
进行设置.我已经使用以下脚本首先创建了绘图,然后确定了一个良好的高程或elev
,可以从中查看我的绘图.然后,我调整了方位角或azim
来改变绘图周围的整个360度,并保存了每个实例的图形(并注意了保存绘图时的方位角).对于更复杂的相机镜头,您可以同时调整仰角和角度以达到所需的效果.
By "camera position," it sounds like you want to adjust the elevation and the azimuth angle that you use to view the 3D plot. You can set this with ax.view_init
. I've used the below script to first create the plot, then I determined a good elevation, or elev
, from which to view my plot. I then adjusted the azimuth angle, or azim
, to vary the full 360deg around my plot, saving the figure at each instance (and noting which azimuth angle as I saved the plot). For a more complicated camera pan, you can adjust both the elevation and angle to achieve the desired effect.
from mpl_toolkits.mplot3d import Axes3D
ax = Axes3D(fig)
ax.scatter(xx,yy,zz, marker='o', s=20, c="goldenrod", alpha=0.6)
for ii in xrange(0,360,1):
ax.view_init(elev=10., azim=ii)
savefig("movie%d.png" % ii)
这篇关于如何设置“相机位置"使用python/matplotlib进行3d图绘制?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!