首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Matplotlib获取ArtistAnimation的所有轴艺术家对象?

Matplotlib获取ArtistAnimation的所有轴艺术家对象?
EN

Stack Overflow用户
提问于 2019-02-17 03:58:38
回答 1查看 972关注 0票数 0

我正在尝试使用ArtistAnimation制作动画,如下所示:

代码语言:javascript
运行
复制
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中的对象?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-17 04:22:25

您提供给ArtistAnimation的列表应该是艺术家列表,每帧一个列表。

代码语言:javascript
运行
复制
artist_list = [[line1a, line1b, title1], [line2a, line2b, title2], ...]

其中第一列表显示在第一帧中,第二列表显示在第二帧中,等等。

您的代码能够工作的原因是ax.plot返回一个行列表(在本例中,只返回单行列表)。

在任何情况下,下面的代码可能是更容易理解的版本,其中附加的文本是动画形式的。

代码语言:javascript
运行
复制
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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54727108

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档