Animación para traducir polígono utilizando matplotlib.

El objective es dibujar un polígono, luego traducirlo horizontalmente. Esto tiene que ser mostrado como una animación. El siguiente es mi código: –

import matplotlib.pyplot as plt from matplotlib.path import Path import matplotlib.patches as patches import time import numpy as np verts = np.array([ [0., -0.25], [0.5, 0.], [0., 0.25], [0., -0.25] ]) codes = [Path.MOVETO, Path.LINETO, Path.LINETO, Path.CLOSEPOLY, ] path = Path(verts, codes) fig = plt.figure() ax = fig.add_subplot(111) patch = patches.PathPatch(path, facecolor='orange') ax.add_patch(patch) ax.set_xlim(-10,10) ax.set_ylim(-10,10) plt.show() time.sleep(1) verts[:,0]=verts[:,0]+3 path = Path(verts, codes) patch = patches.PathPatch(path, facecolor='orange') ax.add_patch(patch) plt.draw() 

plt.show() , dibujo un triángulo y luego lo muestro. A partir de entonces doy una pausa para simular el paso del tiempo para la animación. Luego matplotlib a dibujar el triángulo pero cuando le pido a matplotlib que actualice la ttwig, no hay cambio. ¿Dónde estoy haciendo el error?

Segunda pregunta: en lugar de volver a dibujar el triángulo, solo quería actualizar las coordenadas de vértice del triángulo ya existente usando un método como set_patch pero no existe tal método. Mientras que nosotros usamos set_ydata , etc. para modificar las plots existentes y crear animaciones. ¿Cómo utilizar algún método de ajuste para animar el movimiento deseado?

Con la ayuda de una publicación anterior , pude averiguar cómo hacer esto:

 import matplotlib.pyplot as plt import numpy as np import matplotlib.animation as animation import matplotlib.patches as patches fig = plt.figure() ax = fig.add_subplot(111) ax.set_xlim(-10,10) ax.set_ylim(-10,10) v= np.array([ [0., -0.25], [0.5, 0.], [0., 0.25] ]) patch = patches.Polygon(v,closed=True, fc='r', ec='r') ax.add_patch(patch) def init(): return patch, def animate(i): v[:,0]+=i patch.set_xy(v) return patch, ani = animation.FuncAnimation(fig, animate, np.arange(1, 5), init_func=init, interval=1000, blit=True) plt.show() 

De esta manera, podemos usar set_xy para traducir el polígono. Esto también resuelve el problema en esta publicación al proporcionar una forma de crear identificadores para los objetos y manipularlos.