Hi Eric,

Thanks for your suggestion. The colorbar(shrink) command throws me an
error, as you said it would. But I get another error with the '0.3',
'0.5', etc. I had to replace those with (0.3,0.3,0.3) etc -- RGB tuples.

Finally, my plot only shows white, grey red. I don't get any other
colors -- do you? Is that because of the colorbar(shrink) thing, or is
something else not working? Do I *need* your SVN changes?

Also, when should I be using pcolor versus imshow? If my image is
constructed of colors at specified sample points, is it better that I
use pcolor? The pcolor command isn't mentioned at all in the matplotlib
user's guide...

Cheers
JP

Eric Firing wrote:

> John,
>
> Something like this might be what you want:
>
> from pylab import *
> import matplotlib.numerix.ma as ma
> import matplotlib.colors as colors
> xx = rand(10,15)
> xxx = (xx*15 - 5).astype(Int)
> xxx = ma.masked_where(xxx < 0, xxx)
> xxx.set_fill_value(-1) #(not necessary)
> cmap = colors.ListedColormap(('r', 'g', 'b',
>                                 'c', 'y', 'm',
>                                 'k', '0.3', '0.5',
>                                 '0.7'))
> #cmap.set_bad((1,1,1,0)) # setting alpha to zero does not work, at least
>                         # for imshow
> im = imshow(xxx, interpolation='nearest',
>                  cmap=cmap, norm=colors.no_norm())
> cb = colorbar(shrink=0.6)
>
>
> What we are doing here is making a custom colormap from a list of
> colors (using any valid mpl color specification), and then indexing
> directly into it with values from a (masked) integer array.  Note the
> use of "norm=colors.no_norm()" so that the array values are passed
> directly to the colormap as integers.
>
> Caution: the colorbar command works correctly in this example only
> with the modifications that I committed to svn a few minutes ago.
>
> As noted, the masked regions will have a specified color; they will
> not be transparent.  If you need transparent masked regions, then try
> pcolor instead of imshow.  Pcolor plots nothing at all in masked
> cells. Pcolormesh, on the other hand, is like imshow in plotting the
> assigned bad color and in using a single alpha for everything.
>
> Eric
>
>
> John Pye wrote:
>
>> Hi all
>>
>> I have some data with enumerated values in an array. Values are like
>> 1,2,7,9 spread around in the array. I want to plot those values so that
>> I can see the 'regions' in my data, then I want to overlay this with
>> some contour lines drawn from other data.
>>
>> I want to be able to specify the colors for each of the enumerated
>> values, as they need to be consistent throughout my work. My array of
>> enumerated values is *masked* so that there are areas where I don't want
>> to show anything (this would plot as transparent pixels).
>>
>> Has anyone got suggestions on the best way of doing this? It seems that
>> the technique in
>> http://www.scipy.org/Cookbook/Matplotlib/Plotting_Images_with_Special_Values
>>
>> might be overkill, right? It also seemed that it had some problems with
>> masked arrays.
>>
>> Cheers
>>
>> JP
>>
>
>


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

Reply via email to