Michael Roettger wrote:
Hi all,
maybe I've misunderstood something concerning masking or quiver plots:
I want to exclude some data from a quiver plot. Here's an example:
--------------------8<----
import numpy as N
import pylab as pl
import matplotlib.numerix.ma as ma
# prepare data
X,Y = pl.meshgrid(range(5),range(5))
angles = pl.rand(5,5)
U = N.cos(angles)
V = N.sin(angles)
# prepare mask
M = N.zeros((5,5), dtype='bool')
M[2,2] = True
# apply mask
Um = ma.masked_array(U,mask=M)
Vm = ma.masked_array(V,mask=M)
# plot
pl.quiver(X,Y,Um,Vm)
# pl.plot(range(5),Um[2],'x')
pl.show()
---------------------->8----
Using the commented 'plot' command works as expected, but 'quiver' results in
empty axes. If I take U,V instead of Um,Vm, the arrows are drawn ..
What am I doing wrong or is there another way to exclude arrows from being
plotted?
Thank you in advance,
Michael
Michael: I've fixed this now in svn. If you don't want to update to svn trunk, you can make this simple change in quiver.py
--- lib/matplotlib/quiver.py (revision 6046)
+++ lib/matplotlib/quiver.py (working copy)
@@ -334,6 +334,12 @@
def __init__(self, ax, *args, **kw):
self.ax = ax
X, Y, U, V, C = self._parse_args(*args)
+ if C is not None:
+ X, Y, U, V, C = delete_masked_points(X.ravel(),Y.ravel(),U.ravel(),
+ V.ravel(),C.ravel())
+ else:
+ X, Y, U, V = delete_masked_points(X.ravel(),Y.ravel(),U.ravel(),
+ V.ravel())
self.X = X
self.Y = Y
self.XY = np.hstack((X[:,np.newaxis], Y[:,np.newaxis]))
-Jeff
···
--
Jeffrey S. Whitaker Phone : (303)497-6313
Meteorologist FAX : (303)497-6449
NOAA/OAR/PSD R/PSD1 Email : Jeffrey.S.Whitaker@...259...
325 Broadway Office : Skaggs Research Cntr 1D-113
Boulder, CO, USA 80303-3328 Web : Jeffrey S. Whitaker: NOAA Physical Sciences Laboratory