i am using Python 2.7 (Anaconda) with matplotlib to get the animation of a square patch on a "desk" square patch -background-, so that the little square has to move along a required direction (north,south,est,west) for range=n positions(move=1). I'm using FuncAnimation for my first time, but as plot i only get the square plotted n times instead of have it moving/animated. Here is my code with sample direction "south":
import matplotlib.pyplot as plt
import matplotlib.patches as ptc
from matplotlib import animation
import numpy as np
#__________________________________________________________________________PLOT
fig = plt.figure()
ax1 = fig.add_subplot(111,aspect='equal')
ax1.set_xlim((0,10))
ax1.set_ylim((0,10))
#________________________________________________FIGURES_VECTORS_INITIALIZATION
#DESK
desk=np.matrix([[1,1],[9,1],[9,9],[1,9]]) #desk vertices
#setting initialization - DESK
def initDesk():
ax1.add_patch(ptc.Polygon(desk, closed=True,
fill=False, hatch="/"))
#SQUARE
squVer=np.matrix([[4.5,6.5],[5.5,6.5],[5.5,7.5],[4.5,7.5]]) #square vertices
#_____________________________________________________DIRECTIONS_INITIALIZATION
move=1
null=0
#4DIRECTIONS
north=np.array(([+null,+move]))
south=np.array([+null,-move])
est=np.array([+move,+null])
west=np.array([-move,+null])
#_____________________________________________________________________ANIMATION
def animate(newPos):
iniSqu=np.matrix(squVer)
position=newPos
for step in range (0,4):
if step < 1: #starting point
newPos=iniSqu
else:
newPos=iniSqu+position
square=ptc.Polygon(newPos, closed=True,
facecolor="blue")
ax1.add_patch(square)
iniSqu=newPos
anim = animation.FuncAnimation(fig, animate(south),init_func=initDesk(),repeat=True)
plt.show()
Suggestions about what could fix the problem and get the patch animated instead of get plotted n times on the same figure?