title: Rescaling quiver arrows in physical units consistent to the aspect ratio of the axes
body: <p>I've been spending the past couple of hours trying to customize <code>matplotlib.quiver</code> without much luck. The documentation is quite confusing and I haven't been able to parse out how to set each parameter. In my axes, one vertical pixel is much less physical distance than one horizontal pixel, and I want quiver to autoscale the arrows to this aspect ratio. What I'm currently getting are horizontal arrows with the following code:</p>
  
  <pre><code>Tlevs = np.arange(-1.,8.5,.5) + 0.
  yy, zz = np.meshgrid(ds.YC, ds.Z)
  
  fig, ax = plt.subplots(figsize=(8,5))
  fig.set_tight_layout(True)
  im = ax.contourf(T_clim.YC, T_clim.Z, T_clim, levels=Tlevs)
  ax.quiver(yy[::3,::10], zz[::3,::10], 
            vpFep_b[::3,::10], wpFep_b[::3,::10], 
            pivot='mid', angles='xy', units='xy')
  ax.set_xlabel('Y [m]', fontsize=13)
  ax.set_ylabel('Depth [m]', fontsize=13)
  cbar = fig.colorbar(im, ax=ax)
  cbar.set_label(r"[$^\circ$C]")
  </code></pre>
  
  <p><a href="https://i.stack.imgur.com/Easpz.png" rel="noreferrer"><img src="https://i.stack.imgur.com/Easpz.png" alt="Contour plot with quiver overlaying it"></a></p>
  
  <p>Setting the quiver options to the following only gives dots for what the arrows should be:</p>
  
  <pre><code>ax.quiver(yy[::3,::10], zz[::3,::10], 
                vpFep_b[::3,::10], wpFep_b[::3,::10], 
                pivot='mid', angles='xy', scale_units='xy', scales=1.)
  </code></pre>
  
  <p><a href="https://i.stack.imgur.com/FegaJ.png" rel="noreferrer"><img src="https://i.stack.imgur.com/FegaJ.png" alt="enter image description here"></a></p>
  
  <p>and:</p>
  
  <pre><code>ax.quiver(yy[::3,::10], zz[::3,::10], 
                vpFep_b[::3,::10], wpFep_b[::3,::10], 
                pivot='mid', angles='xy', scale_units='xy')
  </code></pre>
  
  <p>gives the following error:</p>
  
  <pre><code>/home/takaya/miniconda3/envs/uptodate/lib/python3.6/site-packages/matplotlib/quiver.py:666: RuntimeWarning: divide by zero encountered in double_scalars
    length = a * (widthu_per_lenu / (self.scale * self.width))
  /home/takaya/miniconda3/envs/uptodate/lib/python3.6/site-packages/matplotlib/quiver.py:666: RuntimeWarning: invalid value encountered in multiply
    length = a * (widthu_per_lenu / (self.scale * self.width))
  /home/takaya/miniconda3/envs/uptodate/lib/python3.6/site-packages/matplotlib/quiver.py:719: RuntimeWarning: invalid value encountered in less
    short = np.repeat(length &lt; minsh, 8, axis=1)
  /home/takaya/miniconda3/envs/uptodate/lib/python3.6/site-packages/matplotlib/quiver.py:733: RuntimeWarning: invalid value encountered in less
    tooshort = length &lt; self.minlength
  </code></pre>
  
  <p>Any help would be appreciated. Thanks!</p>