如何使用matplotlib的FuncAnimation对新艺术家进行动画处理?

时间:2019-10-08 22:53:52

标签: python matplotlib animation

我正在尝试创建一个动画人物,以便在单个人物中显示随时间推移出现的数以万计的数据点。使用blit=True来避免重绘每一帧的所有内容,如果不告诉它重绘每一帧的所有内容,我将无法工作-我只想绘制新的数据点。

python matplotlib update scatter plot from a functionHow to animate a scatter plot?都不回答这个问题,因为我想添加新的美术师,而不仅仅是用set_offsets更新现有美术师,这迫使每个点都需要重画。 documentation说它确实支持新的艺术家:

  

func 必须返回所有已修改或创建的艺术家的可迭代对象

我在macOS 10.13 RHEL7上运行matplotlib 3.1.1-MacOSX后端对我来说一点都不起作用 ,因此请手动选择TkAgg on该系统:

import matplotlib
matplotlib.use("TkAgg") # On macOS

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


def animate(n):
    scatter = ax1.scatter([n], [n])
    return [scatter]


fig = plt.figure()
ax1 = fig.add_subplot(111)
ax1.set_xlim(0, 20)
ax1.set_ylim(0, 20)

ani = animation.FuncAnimation(fig, animate, interval=100, blit=True)
plt.show()

但是运行此命令时,只有最后绘制的数据点保留在图形上: Animation only showing single artist

如何使用blitting编写新的数据点,而每帧绘制所有内容?

0 个答案:

没有答案