Как отобразить два plt.figures и анимировать их оба, используя matplotlib.animation.FuncAnimation? - PullRequest
0 голосов
/ 21 апреля 2019

Как использовать matplotlib.animation.FuncAnimation для анимации более чем одной plt.figure?

Я пытался анимировать две отдельные фигуры, чтобы я мог отобразить парковочное место на рисунке 1 и движущийся агент автомобиля на рисунке 2.

Тем не менее, все, что я вижу, это парковочное место на рисунке 1 и пустой рисунок на рисунке 2. Я не вижу движущегося автомобиля (или автомобиля, анимированного анимацией. 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')

И я вызываю plt_show () в функции main ().

Я думал, что код выше будет отображать две отдельные фигуры, анимированные в соответствии с тем, как я их определил. Однако показана только фигура 2, тогда как фигура 1 просто показывает пустую фигуру.

Возможно ли, что цифра 1 перекрывается цифрой 2?

Или проблема в другом месте кода?

Спасибо.

...