title: Arrow animation in Python
body: <p>First of all, I am just starting to learn Python. I have been struggling during the last hours trying to update the arrow properties in order to change them during a plot animation.</p>
  
  <p>After thoroughly looking for an answer, I have checked that it is possible to change a circle patch center by modifying the attribute 'center' such as <code>circle.center = new_coordinates</code>. However, I don't find the way to extrapolate this mechanism to an arrow patch...</p>
  
  <p>The code so far is:</p>
  
  <pre><code>import numpy as np, math, matplotlib.patches as patches
  from matplotlib import pyplot as plt
  from matplotlib import animation
  
  # Create figure
  fig = plt.figure()    
  ax = fig.gca()
  
  # Axes labels and title are established
  ax = fig.gca()
  ax.set_xlabel('x')
  ax.set_ylabel('y')
  
  ax.set_ylim(-2,2)
  ax.set_xlim(-2,2)
  plt.gca().set_aspect('equal', adjustable='box')
  
  x = np.linspace(-1,1,20) 
  y  = np.linspace(-1,1,20) 
  dx = np.zeros(len(x))
  dy = np.zeros(len(y))
  
  for i in range(len(x)):
      dx[i] = math.sin(x[i])
      dy[i] = math.cos(y[i])
  patch = patches.Arrow(x[0], y[0], dx[0], dy[0] )
  
  
  def init():
      ax.add_patch(patch)
      return patch,
  
  def animate(t):
      patch.update(x[t], y[t], dx[t], dy[t])   # ERROR
      return patch,
  
  anim = animation.FuncAnimation(fig, animate, 
                                 init_func=init, 
                                 interval=20,
                                 blit=False)
  
  plt.show()
  </code></pre>
  
  <p>After trying several options, I thought that the function update could somehow take me closer to the solution. However, I get the error:</p>
  
  <pre><code>TypeError: update() takes 2 positional arguments but 5 were given
  </code></pre>
  
  <p>If I just add one more patch per step by defining the animate function as shown below, I get the result shown in the image attached.</p>
  
  <pre><code>def animate(t):
      patch = plt.Arrow(x[t], y[t], dx[t], dy[t] )
      ax.add_patch(patch)
      return patch,
  </code></pre>
  
  <p><a href="https://i.stack.imgur.com/fE2B1.png" rel="nofollow noreferrer">Wrong animation</a></p>
  
  <p>I have tried to add a patch.delete statement and create a new patch as update mechanism but that results in an empty animation...</p>