我有以下代码:
sim = simulator()
fig, ax = plt.subplots()
scat = ax.scatter(sim.XY[:,0],sim.XY[:,1])
def animate(i):
sim.run()
scat.set_offsets(sim.XY) # update the data.
return scat
ani = FuncAnimation(fig, animate, interval=10, blit=True, save_count=50)"sim“对象方法"sim.run()”更新为(100,2)数组的sim.XY。
在我的第三行之后,我得到了一个预期的散点图。
但是当我尝试动画(从第5行向下)时,我得到一个错误消息说。有人能帮帮忙吗?
Traceback (most recent call last):
File "C:\Users\anaconda3\lib\site-packages\matplotlib\cbook\__init__.py", line 216, in process
func(*args, **kwargs)
File "C:\Users\anaconda3\lib\site-packages\matplotlib\animation.py", line 953, in _start
self._init_draw()
File "C:\Users\\anaconda3\lib\site-packages\matplotlib\animation.py", line 1732, in _init_draw
self._draw_frame(next(self.new_frame_seq()))
File "C:\Users\anaconda3\lib\site-packages\matplotlib\animation.py", line 1761, in _draw_frame
key=lambda x: x.get_zorder())
TypeError: 'PathCollection' object is not iterable发布于 2020-06-03 04:14:28
我观察到的是,如果我设置了blit=True,动画就不会工作,我会得到错误信息。如果没有该参数,动画将正常工作。有人能解释一下这个参数是做什么的吗?
发布于 2021-10-30 21:26:48
如果你在scat后面加一个逗号,我相信它应该是有效的:
def animate(i):
sim.run()
scat.set_offsets(sim.XY) # update the data.
return scat,如果为blit=True,则输出应为可迭代的:
查看此处:https://matplotlib.org/stable/api/_as_gen/matplotlib.animation.FuncAnimation.html
如果==为True,则func必须返回所有修改或创建的艺术家的可迭代对象。该信息由blitting算法用来确定图的哪些部分必须更新。
在scat后面加一个逗号,使其成为可迭代的。
https://stackoverflow.com/questions/62156407
复制相似问题