我在matplotlib.animation库中使用FuncAnimation时遇到了问题,因此我决定在每个时间点上渲染一个表面图,将表面图保存为.png文件,然后使用pyplot.imread读取该图像。从那里开始,我想将每个图像存储到列表中,以便我可以使用ArtistAnimation(示例)进行动画处理。但是它没有制作动画,相反,当我将imgplot打印到屏幕时,我得到两个单独的空白图和我的表面图.png。
此外,当我尝试保存动画时,我会收到以下错误消息:
AttributeError: 'module' object has no attribute 'save'.
任何有关从当前目录读取一组.png文件,将它们保存在列表中,然后使用ArtistAnimation“动画”这些.png文件的帮助将不胜感激。我不需要什么花哨的东西。
(注意-我必须使代码自动化,所以不幸的是我不能使用像iMovie或ffmpeg这样的外部来源来使我的图像动画化。)
以下是我的代码:
from numpy import *
from pylab import *
import matplotlib.pyplot as plt
import matplotlib.image as mgimg
from matplotlib import animation
## Read in graphs
p = 0
myimages = []
for k in range(1, len(params.t)):
fname = "heatflow%03d.png" %p
# read in pictures
img = mgimg.imread(fname)
imgplot = plt.imshow(img)
myimages.append([imgplot])
p += 1
## Make animation
fig = plt.figure()
animation.ArtistAnimation(fig, myimages, interval=20, blit=True, repeat_delay=1000)
animation.save("animation.mp4", fps = 30)
plt.show()