首页 > 解决方案 > 使用 matplotlib 动画多个子图

问题描述

我想使用 matplotlib 为一些子图设置动画,但我在使用 FuncAnimation 使其工作时遇到了问题。这是我的动画功能

def animate(i):
   global infection_data
   for p in people: 
       p.step()
       p.infect(people)

   position_data = np.array([p.pos for p in people])

   scatter.set_offsets(position_data)
   scatter.set_edgecolors(["k" if p.state == 0 else "r" for p in people])

   new_infection_data = np.array([i + 2, sum([1 if p.state == 1 else 0 for p in people])])
   infection_data = np.vstack((infection_data, new_infection_data))

   plot.set_data(infection_data[:,0], infection_data[:,1])

   return scatter, plot

散点图和图位于两个不同的子图上。散点图按预期工作,但另一个子图上的线没有更新。我怎样才能让这个动画?

这是我如何定义散点图和绘图

fig, ax = plt.subplots(nrows=2)
scatter = ax[0].scatter((), ())
plot, = ax[1].plot(infection_data[:,0], infection_data[:,1])

标签: pythonmatplotlib

解决方案


推荐阅读