如何设置“相机位置"使用python/matplotlib进行3d图绘制? [英] how to set "camera position" for 3d plots using python/matplotlib?

查看:56
本文介绍了如何设置“相机位置"使用python/matplotlib进行3d图绘制?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在学习如何使用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图绘制?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆