我是这里的新手和python中的新手,即时通过matplotliib的animation.FuncAnimation做一些动画。动画效果很好但是我在保存动画方面遇到了问题。这是动画代码的一部分。
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
fig, ax = plt.subplots()
line, = ax.plot(range(N),sin(x[0,:]),'o-')
ax.axis([0,1,-1,1])
def animate(i):
line.set_ydata(sin(x[i,:])) # update the data
return line,
def init():
line.set_ydata(np.ma.array(x[0,:], mask=True))
return line,
ani = animation.FuncAnimation(fig, animate, np.arange(1, 10000),
interval=25, init_func=init, blit=True)
ani.save('2osc.mp4', writer="ffmpeg")
plt.show()
其中x [:,]是先前设置的。 ani.save将动画的每一帧保存为保存电影的.npg图像实例。我不知道这是不是它是如何工作的,我必须用.npg与另一个程序做电影或如果我做错了。 Obs:我以前安装了ffmpeg,它似乎工作正常。
答案 0 :(得分:1)
对我来说,这段代码似乎运行良好:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
fig, ax = plt.subplots(1,1)
x=np.linspace(np.pi,4*np.pi,100)
N=len(x)
ax.set_xlim(len(x))
ax.set_ylim(-1.5,1.5)
line, = ax.plot([],[],'o-')
def init():
line.set_ydata(np.ma.array(x[:], mask=True))
return line,
def animate(i, *args, **kwargs):
y=np.sin(x*i)
line.set_data(np.arange(N),y) # update the data
return line,
ani = animation.FuncAnimation(fig, animate, init_func=init,
frames=100, interval=10, blit= False, repeat = False)
ani.save('2osc.mp4', writer="ffmpeg")
fig.show()
您可以使用以下命令安装ffmpeg库:
sudo apt-get install ffmpeg