我找不到解决方案的部分原因可能是我不知道ims
是什么;它们在打印时被称为lines.Line2D
。
假设我有一个无聊的动画(文档):
x = linspace(0, 2, 100)
f = lambda x: 2**x
fig, ax = subplots()
ims = []
for delta in range(15):
ims.append([
ax.plot(x, f(x) + delta, c = 'r')[0],
ax.plot(x, (f(x) + delta)**2, c = 'b')[0]
])
im_ani = ArtistAnimation(fig, ims)
show()
现在我想将第二行从一个特定的帧中保存下来,例如ims[-1][1]
作为一个图像。我该怎么做?
如果不这样做,我如何才能保存特定的框架?
(我想在不创建两次情节的情况下这样做,我知道这是一个后备解决方案。)
发布于 2015-09-12 19:31:33
ArtistAnimation
的工作方式是有一个艺术家列表,然后控制他们的可见性来创建动画。要想与其中一位艺术家合影,就得假装出这种行为。
x = linspace(0, 2, 100)
f = lambda x: 2**x
fig, ax = subplots()
ims = []
for delta in range(15):
ims.append(list(ax.plot(x, f(x) + delta, c='r') +
ax.plot(x, (f(x) + delta)**2, c='b'))
)
im_ani = ArtistAnimation(fig, ims)
show()
首先你必须停止动画。
del im_ani # this _should_ stop the animation by letting the gc do it's job
或者仅仅是关闭这个数字就可以了。
帮助者的功能类似于:
def save_single_frame(fig, arts, frame_number, artist_number=-1):
# make sure everything is hidden
for frame_arts in arts:
for art in frame_arts:
art.set_visible(False)
# make the one artist we want visible
arts[frame_number][artist_number].set_visible(True)
fig.savefig("frame_{}.png".format(frame_number))
并调用该函数
save_single_frame(fig, ims, 5) # this should save the animation for you
https://stackoverflow.com/questions/32538728
复制相似问题