Thanks Eric,

That is much better. I am going to try and implement it now and see how I go. I 
will let you know.

Regards, Marjolaine.

>>> Eric Firing <[EMAIL PROTECTED]> 07/09/08 11:12 PM >>>
Marjolaine Rouault wrote:
> Hi,
> 
> I don't understand how one creates his own colormap. i am using
> matplotlib and I have checked the example in
> http://www.scipy.org/Cookbook/Matplotlib/Show_colormaps but I can't
> really understand how it works. Are there any other examples out
> there? I want to create a colormap a bit like the one at this url:
> 
> http://www.pyngl.ucar.edu/Graphics/Images/ViBlGrWhYeOrRe.gif
> 
> best regards, Marjolaine.
> 
> 
> 

Marjolaine,

Depending on your starting point--what you know about your desired 
colormap--you can use either a LinearSegmentedColormap or a 
ListedColormap.  If you already have a colormap in the form of a list of 
evenly-spaced colors, then the simplest way to get it into mpl is by 
using that list to initialize a ListedColormap.  If, instead, you have a 
general idea of how you want R, G, and B to vary over the range of the 
map, then you probably need the LinearSegmentedColormap.

Every description of the LinearSegmentedColormap class that I have seen 
is confusing, even though the way it works is fairly simple.  Let's see 
if I can make it a little less confusing.

Example: suppose you want red to increase from 0 to 1 over the bottom 
half, green to do the same over the middle half, and blue over the top 
half.  Then you would use:

cdict = { 'red': ((0, 0, 0),
                   (0.5, 1, 1),
                   (1, 1, 1)),
           'green': ((0, 0, 0),
                     (0.25, 0, 0),
                     (0.75, 1, 1),
                     (1, 1, 1)),
            'blue': ((0, 0, 0),
                     (0.5, 0, 0),
                     (1, 1, 1))}

If, as in this example, there are no discontinuities in the r, g, and b 
components, then it is quite simple: the second and third element of 
each tuple, above, is the same--call it "y".  The first element ("x") 
defines interpolation intervals over the full range of 0 to 1, and it 
must span that whole range.  In other words, the values of x divide the 
0-to-1 range into a set of segments, and y gives the end-point color 
values for each segment.

Now consider the green. cdict['green'] is saying that for
0 <= x <= 0.25, y is zero; no green.
0.25 < x <= 0.75, y varies linearly from 0 to 1.
x > 0.75, y remains at 1, full green.

If there are discontinuities, then it is a little more complicated. 
Label the 3 elements in each row in the cdict entry for a given color as 
(x, y0, y1).  Then for values of x between x[i] and x[i+1] the color 
value is interpolated between y1[i] and y0[i+1].

Going back to the cookbook example, look at cdict['red']; because y0 != 
y1, it is saying that for x from 0 to 0.5, red increases from 0 to 1, 
but then it jumps down, so that for x from 0.5 to 1, red increases from 
0.7 to 1.  Green ramps from 0 to 1 as x goes from 0 to 0.5, then jumps 
back to 0, and ramps back to 1 as x goes from 0.5 to 1.

row i:   x  y0  y1
                /
               /
row i+1: x  y0  y1

Above is an attempt to show that for x in the range x[i] to x[i+1], the 
interpolation is between y1[i] and y0[i+1].  So, y0[0] and y1[-1] are 
never used.

I hope I got all that right--I would welcome close checking.  I want to 
get an adequate and correct explanation into the standard mpl documentation.


Eric



-- 
This message is subject to the CSIR's copyright terms and conditions, e-mail 
legal notice, and implemented Open Document Format (ODF) standard. 
The full disclaimer details can be found at 
http://www.csir.co.za/disclaimer.html.

This message has been scanned for viruses and dangerous content by MailScanner, 
and is believed to be clean.  MailScanner thanks Transtec Computers for their 
support.


-------------------------------------------------------------------------
Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW!
Studies have shown that voting for your favorite open source project,
along with a healthy diet, reduces your potential for chronic lameness
and boredom. Vote Now at http://www.sourceforge.net/community/cca08
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to