在matplotlib动画中重用数字

时间:2016-08-31 11:44:40

标签: python python-2.7 animation matplotlib

我希望在动画中多次重复使用matplotlib图形。基本工作流程是:

  1. 运行一些代码
  2. 可视化结果
  3. 并多次重复步骤1,2。我希望使用相同的figure实例的原因是我没有弹出新的窗口。

    以下是示例代码:

    import numpy as np
    from matplotlib import pyplot as plt
    from matplotlib import animation
    
    def init_animate(fig):
      #plt.ion()
      #fig = plt.figure()
      ax = fig.add_subplot(111)
      im_obj = ax.imshow(np.zeros((200,200,3)).astype(np.uint8))
      #return fig, im_obj
      return im_obj
    
    def animate(i, im_obj):
      im = np.zeros((200,200,3)).astype(np.uint8)
      if np.mod(i,45) < 15:
        im[:,:,0] = 255
      elif np.mod(i,45) < 30:
        im[:,:,1] = 255
      else:
        im[:,:,2] = 255
      im_obj.set_data(im)
      return im_obj,
    
    def run_animate():
      fig = plt.figure()
      fig.set_animated(True)
      for i in range(5):
        im_obj = init_animate(fig)
        anim = animation.FuncAnimation(fig, animate, frames=45,
    interval=15, blit=False, fargs=[im_obj], repeat=False)
        plt.ion()
        plt.show(block=False)
        matplotlib.interactive(False)
        fig.clf(keep_observers=True)
    

    当我运行run_animate时,我只看到动画一次,但不是全部五次。如果我在figure循环中创建新的for,则一切都按预期工作。关于我可能缺少什么的任何指示?

0 个答案:

没有答案