MatPlotLib围绕固定轴旋转3D绘图

时间:2017-05-11 17:58:59

标签: python matplotlib 3d

我试图围绕绘制的垂直绿轴旋转下图:

Rotate around vertical Green axis

但是,我在尝试设置正确的高程和方位角值时遇到了麻烦,以便正确旋转我的身材。

例如,

    for i in range(0,360):
        axU.view_init(100-i,-90+i)
        plt.draw()
        plt.savefig('./gif1/rot%i.jpg'%i,dpi=100)   

给了我一个像

的数字

http://imgur.com/b26d0V2

    for i in range(0,360):
        axU.view_init(100,-90+i)
        plt.draw()
        plt.savefig('./gif1/rot%i.jpg'%i,dpi=100)   

看起来像:

http://imgur.com/3wdN8zT

两者都让我在不需要的轴周围旋转太多,因为我真的只想围绕上面绘制的绿轴进行平移。有没有办法做到这一点?

    for i in range(0,360):
        axU.view_init(100-i,-90)
        plt.draw()
        plt.savefig('./gif1/rot%i.jpg'%i,dpi=100)   

这给了我类似于我想要的东西,其中旋转在一个轴周围是均匀的,但是这围绕水平绿轴旋转,而我希望它围绕垂直绿轴旋转。

rotation

http://imgur.com/b4zeUiI

1 个答案:

答案 0 :(得分:0)

函数ax.view_init有两个参数;高程和方位角;以该顺序。从文档中:

  

'elev'将仰角存储在z平面中。

     

'azim'将方位角存储在x,y平面中。

在旋转z平面时,当前将x,y平面保持不变。要获得所需的轮换,切换条目应达到目的:

for i in range(0,360):
    axU.view_init(-90,100-i)
    plt.draw()
    plt.savefig('./gif1/rot%i.jpg'%i,dpi=100)

尽管也可以按照需要的起始仰角进行操作(或者您可以通过输入ax.view_init(azim=100-i)并获取默认仰角将其保留为空白)。同样,使用此代码,您将旋转360度,因此您可以选择起点(当前为100)和方向(将-i更改为+ i)。