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