Eric Firing wrote: > Jeff Whitaker wrote: >> 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 > > Jeff, > > Thanks for the quick fix--it will help for now, and will work in most > use cases, but it is not actually correct in general. The problem is > that quiver supports input of changed values of U, V, and C on the > existing X, Y grid, and these changed values can be masked arrays with > different points masked. (See Quiver.set_UVC().) That is why I did not > use delete_masked_points in the first place. Masked values used to be > handled correctly; I suspect the bug is actually in collections, not > in quiver itself. I can't track it down right now, but may be able to > look at it over the weekend. > > Eric
OK Eric - I figured you'd chime in when you got a chance. Let's consider it a temporary workaround then. BTW: I updated the quiver_demo.py example to test the masking. -Jeff > >> >> --- 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 : [EMAIL PROTECTED] 325 Broadway Office : Skaggs Research Cntr 1D-113 Boulder, CO, USA 80303-3328 Web : http://tinyurl.com/5telg ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users