我正在尝试使用ArtistAnimation制作动画,如下所示:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
fig, ax = plt.subplots()
ims = []
for i in range(60):
    x = np.linspace(0,i,1000)
    y = np.sin(x)
    im = ax.plot(x,y, color='black')
    ims.append(im)
ani = animation.ArtistAnimation(fig, ims, interval=50, blit=True,
                                repeat_delay=1000)
plt.show()这将为整个图形中生长的正弦波设置动画效果。目前,我只是将ax.plot()返回的Lines2D对象添加到ims中。但是,我想潜在地在轴上绘制多个重叠的图,并为每个帧调整标题、图例和x轴范围。在打印并对每个帧进行所有我想要的更改后,如何获得可以添加到ims中的对象?
发布于 2019-02-17 04:22:25
您提供给ArtistAnimation的列表应该是艺术家列表,每帧一个列表。
artist_list = [[line1a, line1b, title1], [line2a, line2b, title2], ...]其中第一列表显示在第一帧中,第二列表显示在第二帧中,等等。
您的代码能够工作的原因是ax.plot返回一个行列表(在本例中,只返回单行列表)。
在任何情况下,下面的代码可能是更容易理解的版本,其中附加的文本是动画形式的。
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
fig, ax = plt.subplots()
artist_list = []
for i in range(60):
    x = np.linspace(0,i,1000)
    y = np.sin(x)
    line, = ax.plot(x,y, color='black')
    text = ax.text(i,0,i)
    artist_list.append([line, text])
ani = animation.ArtistAnimation(fig, artist_list, interval=50, blit=True,
                                repeat_delay=1000)
plt.show()通常,很难使用ArtistAnimation为更改轴限制设置动画,因此,如果这是最终目标,请考虑使用FuncAnimation。
https://stackoverflow.com/questions/54727108
复制相似问题