如何显示两个plt.figures并使用matplotlib.animation.FuncAnimation对它们进行动画处理?

时间:2019-04-21 09:19:46

标签: matplotlib figure parking

如何使用matplotlib.animation.FuncAnimation为多个plt.figure动画?

我一直试图为两个单独的人物设置动画,以便可以在图1中显示一个停车位,在图2中显示一个移动的汽车经纪人。

但是,我所看到的只是图1中的停车位和图2中的空白图。我没有看到行驶中的汽车(或通过animation.FuncAnimation动画化的汽车)

        '''
        self.ax adds environment to our plt.figure(1) (self.env_fig)
        self.ax2 adds car to out plt.figure(2) (self.car_fig)
        '''
        self.env_fig = plt.figure(1)
        self.ax = self.env_fig.add_subplot(111, aspect='equal')
        self.ax.set_title('Parking Environment')
        self.ax.axis('off')

        self.car_fig = plt.figure(2)
        self.ax2 = self.car_fig.add_subplot(111, aspect='equal')
        self.ax2.set_title('Car agent')
        self.ax2.axis('off')

        self.wall_patch = mpl_patches.PathPatch(self.wall_path, edgecolor='black', facecolor='white', lw=5)
        self.car1_patch = mpl_patches.PathPatch(self.car1_path, facecolor='black', lw=0)
        self.car2_patch = mpl_patches.PathPatch(self.car2_path, facecolor='black', lw=0)

        self.ax.add_patch(self.wall_patch)
        self.ax.add_patch(self.car1_patch)
        self.ax.add_patch(self.car2_patch)

        self.ax2.add_patch(self.agent_patch)
        self.ax2.add_patch(self.agent_head_patch)
        self.ax2.add_patch(self.agent_center_patch)

在底部,我实现了animate()函数以同时显示和动画两个图形。

 def plt_show(self):
        # print '...........................'
        self.anim = animation.FuncAnimation(self.env_fig, self.animate_env,
                                       init_func=None,
                                       frames=1000,
                                       interval=1,
                                       # repeat= False,
                                       blit=True)

        self.anim1 = animation.FuncAnimation(self.car_fig, self.animate_car,
                                        init_func=None, 
                                        frames=1000,
                                        interval =1,
                                        blit=True)

        plt.gca().invert_xaxis()
        plt.gca().invert_yaxis()
        plt.axis('equal')
        plt.axis('off')

然后在main()函数中调用plt_show()。

我认为上面的代码将根据我的定义显示两个单独的动画人物。但是,仅显示图2,而图1仅显示空白图。

图1是否有可能被图2覆盖?

还是代码中其他地方的问题?

谢谢。

0 个答案:

没有答案