如何在python中旋转3d图?(或作为动画)使用鼠标旋转3D视图

Iul*_*can 0 python 3d

我有包含3D图的此代码。我在Spyder中运行代码;我想知道是否可以使此图旋转一个角度(360度)并保存。谢谢!抱歉,这是一个愚蠢的问题,但是我是Python的新手。

import matplotlib.pyplot as plt
import numpy as np
from scipy import array
jet = plt.get_cmap('jet')
from matplotlib import animation
fig = plt.figure()
ax = fig.gca(projection='3d')

X = np.linspace(70,40,4)
Y = np.linspace(5,2,4)
X,Y=  np.meshgrid(X, Y)

Z = array ([
        [1223.539555, 1428.075086,1714.479425, 2144.053223],
        [1567.26647,1829.056119,2990.416079,2745.320067],
        [2135.163957,2491.534201, 2990.416079,3738.761638],
        [3257.280827, 3800.655101, 4561.372117, 5702.458776],
        ])

surf = ax.plot_surface(X, Y, Z, rstride = 1, cstride = 1, cmap = jet,linewidth = 0,alpha= 1)
ax.set_zlim3d(0, Z.max())

fig.colorbar(surf, shrink=0.8, aspect=5)
ax.set_xlabel('Axial Length [mm]')
ax.set_ylabel('nbTurns')
ax.set_zlabel('RPM')

plt.show()
Run Code Online (Sandbox Code Playgroud)

a.s*_*iet 6

您需要定义一个函数才能获得特定的动画。在您的情况下,这很简单:

def rotate(angle):
    ax.view_init(azim=angle)
Run Code Online (Sandbox Code Playgroud)

然后使用matplotlib动画:

rot_animation = animation.FuncAnimation(fig, rotate, frames=np.arange(0,362,2),interval=100)
Run Code Online (Sandbox Code Playgroud)

这将调用与所述旋转功能frames参数作为角度和用的间隔100ms,所以这将导致在旋转过360°每一个步骤100ms。要将动画另存为gif文件,请执行以下操作:

rot_animation.save('path/rotation.gif', dpi=80, writer='imagemagick')
Run Code Online (Sandbox Code Playgroud)