我正在尝试创建一个动画人物,以便在单个人物中显示随时间推移出现的数以万计的数据点。使用blit=True
来避免重绘每一帧的所有内容,如果不告诉它重绘每一帧的所有内容,我将无法工作-我只想绘制新的数据点。
python matplotlib update scatter plot from a function或How 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()
如何使用blitting编写新的数据点,而不每帧绘制所有内容?