On Wed, Apr 29, 2009 at 11:03 AM, John Hunter <jdh2...@gmail.com> wrote:

>
>> ...but I'd like more feedback from the author or users of fill_between
>> before committing that change.  (That, and Eric Firing can probably find
>> a much more efficient way to do the masked array manipulation... ;)
>
>
> I'm working on a patch for this now....but I would also like Eric to take a
> look when I am done since I am a masked array dummy



Here's the diff I just committed::
Index: lib/matplotlib/axes.py
===================================================================
--- lib/matplotlib/axes.py      (revision 7069)
+++ lib/matplotlib/axes.py      (working copy)
@@ -5832,6 +5832,26 @@
         self._process_unit_info(xdata=x, ydata=y1, kwargs=kwargs)
         self._process_unit_info(ydata=y2)

+        if where is None:
+            where = np.ones(len(x), np.bool)
+        else:
+            where = np.asarray(where)
+
+        maskedx = isinstance(x, np.ma.MaskedArray)
+        maskedy1 = isinstance(y1, np.ma.MaskedArray)
+        maskedy2 = isinstance(y2, np.ma.MaskedArray)
+
+        if (maskedx or maskedy1 or maskedy2):
+            if maskedx:
+                where = where & (~x.mask)
+
+            if maskedy1:
+                where = where & (~y1.mask)
+
+            if maskedy2:
+                where = where & (~y2.mask)
+
+
         # Convert the arrays so we can work with them
         x = np.asarray(self.convert_xunits(x))
         y1 = np.asarray(self.convert_yunits(y1))
@@ -5843,10 +5863,7 @@
         if not cbook.iterable(y2):
             y2 = np.ones_like(x)*y2

-        if where is None:
-            where = np.ones(len(x), np.bool)

-        where = np.asarray(where)
         assert( (len(x)==len(y1)) and (len(x)==len(y2)) and
len(x)==len(where))

         polys = []
------------------------------------------------------------------------------
Register Now & Save for Velocity, the Web Performance & Operations 
Conference from O'Reilly Media. Velocity features a full day of 
expert-led, hands-on workshops and two days of sessions from industry 
leaders in dedicated Performance & Operations tracks. Use code vel09scf 
and Save an extra 15% before 5/3. http://p.sf.net/sfu/velocityconf
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to