Darren Dale wrote:
> I am experimenting with numpy masked arrays, and have a question about 
> how imshow handles them:
> 
> from numpy import ma
> from pylab import colorbar, imshow, show
> 
> a=ma.array([[1,2,3],[4,5,6]],mask=[[0,0,1],[0,0,0]], fill_value=0)
> imshow(a, interpolation='nearest')
> colorbar()
> show()
> 
> With svn matplotlib, the missing value is treated as if identical to the 
> maximum value. I thought imshow would instead respect the masked array's 
I don't see this with my installation from svn.
> fill_value property by calling fix_invalid, and perhaps defaulting to 
> the min() or max() if fill_value is the default 999999. What is the 
> intended behavior?

What I see with your example is a white square for the masked value; 
actually, it is transparent, with alpha = 0.  This is the intended 
default; if it is masked, don't paint anything.  It is set in 
Colormap.__init__ and can be overridden by Colormap.set_bad().

There is no intention to use the masked array fill value.

> 
> Relatedly, it looks like imshow and other functions like contour are 
> badly confused by NaNs, I thought they were supported?

I suspect we really should run the Z inputs through masked_invalid, 
especially for contour.  The performance hit is minimal as a fraction of 
the total time.  I will do this for contour.  imshow has to be handled 
more carefully, so I don't want to do it in a hurry.

One of the general cleanups needed in mpl is clarity and consistency in 
argument validation.  Part of this is a matter of clarity about API 
levels; we don't want to have to do full validation and acceptance of 
all possible input variations at every level.

Eric

> 
> Thanks,
> Darren

------------------------------------------------------------------------------
_______________________________________________
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel

Reply via email to