2010/3/14 David Arnold <dwarnol...@suddenlink.net>:
> All,
>
> I am having difficulty with a line on:  http://scipy.org/LoktaVolterraTutorial
>
> Here are the lines:
>
> values  = linspace(0.3, 0.9, 5)
>
> vcolors = p.cm.autumn_r(linspace(0.3, 1., len(values)))
>
> First of all, I can find no reference to autumn_r in the Matplotlib 
> documentation. Also, using Aptana (eclipse), PyDev complains about the 
> vcolors line with:

The colormap's data is defined in matplotlib._cm.py, there a
dictionary defining the names of the colormaps is defined from line
no. 5814 on.  The colormaps are "imported", i.e. added to the
module-local namespace by "patching" locals() in matplolib.cm on line
43, where cmap_d also containes reversed versions of all the data
defined by matplotlib._cm, indicated by an trailing "_r" in the name.
Because the data isn't imported the usual way, your program (PyDev?)
will not find it.

> Undefined variable from import: autumn_r        Lotka.py        
> /scipy/src/pkg  line 44 PyDev Problem
>
> Secondly, I am used to using colormaps in Matlab, but not so  much in 
> Matplotlib. In Matlab, g=grey(256) produces an 256x3 matrix and each row is 
> indexed by the numbers 1 through 256. Thus, if you have an image and pixel 
> has a value 124, then row 124 gives an rgb triple that is used to color the 
> pixel.

I think you can reproduce the matlab behaviour by using:

>>> result = some_colormap(numpy.linspace(0.0, 1.0, 256), [bytes = True]).

The optional bytes = True argument specifies to return integer \in [0,
255] colors.  The return ndarray will have shape (256, 4), and an
indicing result[i] returns the ndarray array([r, g, b, a]).  Note than
numpy and Python use zero-based indices, opposed to matlab's one-based
indices.

> However, in the case of vcolors = p.cm.autumn_r(linspace(0.3, 1., 
> len(values))), I'm really not sure what is going on. The 
> linspace(0.3,1,len(values)) produces len(values) equally spaced numbers from 
> 0.3 to 1. Now, how is autumn_r(array([ 0.3  ,  0.475,  0.65 ,  0.825,  1.   
> ])) make any sense?

The first argument to some_colormap.__call__(X, alpha [= 1.0], bytes
[= False]) is the interpolation axis.  I embed __call__()'s __doc__
string:

        """
        *X* is either a scalar or an array (of any dimension).
        If scalar, a tuple of rgba values is returned, otherwise
        an array with the new shape = oldshape+(4,). If the X-values
        are integers, then they are used as indices into the array.
        If they are floating point, then they must be in the
        interval (0.0, 1.0).
        Alpha must be a scalar.
        If bytes is False, the rgba values will be floats on a
        0-1 scale; if True, they will be uint8, 0-255.
        """

I myself just did a short dive into the matplotlib code of cm.py,
_cm.py, and colors.py, so this are just my conclusions.

Friedrich

------------------------------------------------------------------------------
Download Intel&#174; Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to