python - Matplotlib ArtistAnimation 一步显示多个元素

标签 python matplotlib animation

我已经使用 matplotlib 创建绘图有一段时间了,但现在才发现动画选项。我想使用 animation.ArtistAnimation 在动画中显示一系列绘图(而不仅仅是单个元素)。

不幸的是,我无法让它一次为多个绘制的元素设置动画。这是一个最小的例子来解释我的意思:

import random
import matplotlib.pyplot as plt
import matplotlib.animation as animation

fig = plt.figure()

ims = []
for _ in range(10):
    im1, = plt.plot([random.randrange(10), random.randrange(10)], [random.randrange(10), random.randrange(10)])
    im2, = plt.plot([random.randrange(10), random.randrange(10)], [random.randrange(10), random.randrange(10)])
    ims.append((im1,))
    ims.append((im2,))
ani = animation.ArtistAnimation(fig, ims)

ani.save('im.mp4')

这会随机生成两行 im1im2 10x。我总是想同时看到 im1im2。但这一次只显示一行。 如果我注释 ims.append((im1,)),则背景充满静态线条,但它仍然只为一行添加动画。 我还尝试使用 im1 + im2[im1, im2] 组合 im1im2,但两者都导致错误。

额外问题:默认情况下是否有任何原因blit=False?我想,这应该可以提高性能吗?

最佳答案

解决方案很简单,将两位艺术家同时添加到列表中。

documentation谈论“代表需要在每帧上启用的内容的艺术家集合”,因此 ims 需要的是艺术家(每帧任意)的列表(每帧一个)列表。

import random
import matplotlib.pyplot as plt
import matplotlib.animation as animation

fig = plt.figure()

ims = []
for _ in range(10):
    im1, = plt.plot([random.randrange(10), random.randrange(10)], [random.randrange(10), random.randrange(10)])
    im2, = plt.plot([random.randrange(10), random.randrange(10)], [random.randrange(10), random.randrange(10)])
    ims.append([im1, im2])
ani = animation.ArtistAnimation(fig, ims)

ani.save('im.mp4')

关于python - Matplotlib ArtistAnimation 一步显示多个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61639399/

相关文章:

python - 运行python3时出现"This package should not be accessible on Python 3"

python - 如何在 Python 中 reshape networkx 图?

python - Matplotlib:如何加载和显示 PDF 图像

objective-c - UIView animateWithDuration : slows down animation frame rate

python - 如何从 psycopg2 导入 "connection"类?

python - 根据范围获取子词典

android - 如何在 Android 中获取类似波形的声云

Ubuntu 自动隐藏滚动条的 Jquery 版本?

python - libusb 1.0 安装,适用于 XP,适用于 noob

python - 如何在图形 Matplotlib 中显示 x 或 y 值?