I think there may be two bugs in quiver.

1. Quiver doesn't seem to accept 1D arrays X and Y if they are

different sizes -- they need to be turned into 2d arrays with meshgrid

for the program to work. With line 13 uncommented I get the following

error message:

File "quivtest.py", line 13, in <module>

ax.quiver(XT,YT,uu,vv) #fails

File "/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages/matplotlib/axes.py",

line 5533, in quiver

q = mquiver.Quiver(self, *args, **kw)

File "/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages/matplotlib/quiver.py",

line 343, in __init__

self.XY = np.hstack((X[:,np.newaxis], Y[:,np.newaxis]))

File "/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages/numpy/lib/shape_base.py",

line 488, in hstack

return _nx.concatenate(map(atleast_1d,tup),1)

ValueError: array dimensions must agree except for d_0

2. Masking is not working properly with quiver, while it works fine

with contour -- see the attached quivtest.png

quiver.py:

import numpy as np

import numpy.ma as ma

import matplotlib

matplotlib.use('Agg')

import matplotlib.pyplot as plt

XT = np.arange(10.)

YT = np.arange(20.)

uu = np.zeros([20,10])+7.

vv = np.zeros([20,10])+3.

fig = plt.figure()

ax = fig.add_subplot(121)

# ax.quiver(XT,YT,uu,vv) #fails

XX,YY = np.meshgrid(XT,YT)

ax.quiver(XX,YY,uu,vv) #Ok

ax = fig.add_subplot(122)

msk = XX**2+YY**2 >50

uumsk = ma.masked_array(uu,mask=msk)

vvmsk = ma.masked_array(vv,mask=msk)

ax.contour(XT,YT,uumsk*XX) # works

ax.quiver(XX,YY,uumsk,vvmsk) # gives strange shapes

plt.show()

fig.savefig('quivtest.png',dpi=100)

George Nurser.