因此,我学会了如何在matplotlib中制作可爱的小动画。例如,如下所示:
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
plt.ion()
fig = plt.figure()
ax = fig.add_subplot(111)
ax.set_xlim(0, 1)
ax.set_ylim(-2,2)
dt = 0.01
q = 0.01
t = np.arange(0,1,dt)
x = np.sin(2*np.pi*t)
line, = ax.plot(t,x, '-')
fig.canvas.draw()
for i in xrange(100):
x = (1-q) * x + q* np.random.normal(size = len(t))
line.set_ydata(x)
fig.canvas.draw()这很有效,而且非常好用。但是我如何使用它来制作一部可以播放的电影,例如,在pdf演示文稿中?我试着做fig.savefig("test.gif"),但是有一个错误消息指出matplotlib不能导出gif。
有没有一种不借助外部工具就能做到这一点的方法(比如制作大量的png并将它们缝合在一起)?
发布于 2011-12-16 03:48:57
简而言之,除了使用外部工具之外,没有其他方法。在1.1.0中有一个新的模块,可以帮助你完成animations并将它们保存为mpeg4格式。它使用外部工具自动执行此转换,从多个帧到单个电影。您可以使用imagemagick的convert或ffmpeg或mencoder制作gif,这是新的动画模块提供的两个选项。
发布于 2013-02-21 02:07:06
如果您使用matplotlib.animation并在路径中包含类似于FFmpeg的内容,则应该可以这样做:
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
from matplotlib.animation import ArtistAnimation
fig = plt.figure()
ax = fig.add_subplot(111)
ax.set_xlim(0, 1)
ax.set_ylim(-2,2)
dt = 0.01
q = 0.01
t = np.arange(0,1,dt)
x = np.sin(2*np.pi*t)
images = []
for i in xrange(100):
x = (1-q) * x + q* np.random.normal(size = len(t))
line, = ax.plot(t,x, '-')
images.append((line,))
line_anim = ArtistAnimation(fig, images, interval=50, blit=True)
line_anim.save('my_animation.mp4')
plt.show()很可爱,是吧?
https://stackoverflow.com/questions/8524841
复制相似问题