我有包含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)
您需要定义一个函数才能获得特定的动画。在您的情况下,这很简单:
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°
与2°
每一个步骤100ms
。要将动画另存为gif文件,请执行以下操作:
rot_animation.save('path/rotation.gif', dpi=80, writer='imagemagick')
Run Code Online (Sandbox Code Playgroud)