On Mon, Jan 2, 2012 at 11:10 AM, Chao YUE <chaoyue...@gmail.com> wrote:
> Dear all matplotlib users,
>
> Happy New Year.
> I try to check the distribution of a 2D array and I find that the
> histogram plot function doesn't respect the numpy masked array?
>
>
> In [188]: a=range(1,6); b=np.array(a+a[::-1])
>
> In [189]: b=np.ma.masked_equal(b,2); b=np.ma.masked_equal(b,5)
>
> In [190]: b
> Out[190]:
> masked_array(data = [1 -- 3 4 -- -- 4 3 -- 1],
> mask = [False True False False True True False False True
> False],
> fill_value = 5)
>
>
> In [191]: n,bins,patches=plt.hist(b)
>
> In [192]: n
> Out[192]: array([2, 0, 2, 0, 0, 2, 0, 2, 0, 2])
>
> In [193]: n.sum()
> Out[193]: 10
>
> it seems that all the elements (masked or not) are counted in the history
> plotting?
> and the original value is used but not the fill_value?
>
> I attach a figure below.
>
> In [194]: plt.show()
>
>
Yes, this is a known issue (at least, from the comments within the
function). Looks like hist() uses np.asarray() instead of np.asanyarray(),
which would result in the array being stripped of its mask. However, I
don't think the fix is as straight-forward as changing that to
np.asanyarray(). I will take a peek and see what can be done.
Ben Root
------------------------------------------------------------------------------
Ridiculously easy VDI. With Citrix VDI-in-a-Box, you don't need a complex
infrastructure or vast IT resources to deliver seamless, secure access to
virtual desktops. With this all-in-one solution, easily deploy virtual
desktops for less than the cost of PCs and save 60% on VDI infrastructure
costs. Try it free! http://p.sf.net/sfu/Citrix-VDIinabox
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users