Bug fixed in repo github.com/friedrichromstedt/matplotlib:trunk

A pull by astraw if possible would be great, I don't want to merge in
the trunk from astraw all the time, according to numpy-discussion this
will generate messy structure once we switched to GitHub :-)

UNTESTED, LittleBigBrain (how's your real name?), can you please fetch
from that repo and run the test suite, I have to work for numpy 10.5
Installers.

Your tests provided by you pass now.  But it might break other things
if I had bad luck.

Alternatively I can provide the diff, if someone tells me how to do
that.  First awaiting LittleBigBrain's test results.

Friedrich

2010/10/18 LittleBigBrain <braingate...@gmail.com>:
> 2010/10/18 Friedrich Romstedt <friedrichromst...@gmail.com>:
>> 2010/10/18 脑关(BrainGateway)生命科学仪器 <braingate...@gmail.com>:
>>> On Mon, Oct 18, 2010 at 12:54 AM, Benjamin Root <ben.r...@ou.edu> wrote:
>>>> On Sun, Oct 17, 2010 at 5:35 PM, braingateway <braingate...@gmail.com>
>>>> wrote:
>>>>> I tried all possible colormaps and found out: gist_rainbow, terrain,
>>>>> bwr, brg, and seismic will generate the same error, all other colormaps
>>>>> are OK. I wonder is this a bug or expected behavior?
>>> Hi Ben,
>>> Thanks a lot for answering my question! I am a newbie to matplotlib,
>>> so please forgive me, if the question is stupid ;p
>>
>> Questions are never stupid ...
>>
>>> In my program I wanna know the exact RGBA value of a data point in the
>>> figure, in order to plot a corresponding line with the same color in
>>> another figure. That is why I need to call a(z) to get RGBA value of a
>>> point at (x,y,z) (z is represented by color). If I understood it
>>> correctly, you said I do not need to specify the 'lut' in
>>> cm.get_cmap(name,lut)? I thought the colormap object is actually a
>>> lookup table with a length specified by lut.
>>
>> Kind of, but it's initialised from a linear segmentation dictionary,
>> so you can get cmaps with a precision you want.
>>
>>> It turns out I do not
>>> need to specify anything here.
>>
>> Default param is 256.
>>
>>> But if I do not specify anything the
>>> colormap.N is always 256. What will happen then, if I need more color
>>> steps?
>>
>> cm = get_cmap('...', 1024)
>>
>>> I do notice a(2) and a(2.2) returns different values. So I am
>>> very confused about the principle how the RGBA value is generated by
>>> the colormaps.
>>
>> It's the "magic" to distinguish between integer (in the LUT range) and
>> float (in [0.0, 1.0]).  2 gives the LUT entry 2, 2.0 will give the
>> upper value since it's > 1, as will 2.2 do.  Try 0.5, and 0.6, or 0.0
>> and 0.1.
>>
>> Actually I cannot reproduce your error on a recently (some weeks ago)
>> checked-out GitHub repo version of mpl 1.0.0.  Please provide
>> mpl.__version__ so that we check if that's the reason - as simple as
>> it might be.
>>
>> MacBook-Pro-Friedrich:Report Friedrich$ python
>> Python 2.6.5 (r265:79063, Jul 18 2010, 12:14:53)
>> [GCC 4.2.1 (Apple Inc. build 5659)] on darwin
>> Type "help", "copyright", "credits" or "license" for more information.
>>>>> import matplotlib.cm
>>>>> cm = matplotlib.cm.get_cmap('gist_rainbow')
>>>>> cm(range(256))
>> array([[ 1.        ,  0.        ,  0.16      ,  1.        ],
>>       [ 1.        ,  0.        ,  0.13908497,  1.        ],
>>       [ 1.        ,  0.        ,  0.11816993,  1.        ],
>>       ...,
>>       [ 1.        ,  0.        ,  0.79262575,  1.        ],
>>       [ 1.        ,  0.        ,  0.77131287,  1.        ],
>>       [ 1.        ,  0.        ,  0.75      ,  1.        ]])
>>>>> print matplotlib.__version__
>> 1.0.0
>>
>> The attribute of the cm where the error occurs on your machine is set
>> to a valid value for me.  I also cannot find any code path leading to
>> a wrong initialisation of the attribute.  Might be that the data the
>> cm is init'ed from changed.  There is a code path initialising the cm
>> from a tuple (your attribute was a tuple used like a dict), but this
>> works too:  (terrain is such an example):
>>
>>>>> cm = matplotlib.cm.get_cmap('terrain')
>>>>> cm(range(256))
>> array([[ 0.2       ,  0.2       ,  0.6       ,  1.        ],
>>       [ 0.19477124,  0.21045752,  0.61045752,  1.        ],
>>       [ 0.18954248,  0.22091503,  0.62091503,  1.        ],
>>       ...,
>>       [ 0.98431373,  0.97992157,  0.97898039,  1.        ],
>>       [ 0.99215686,  0.98996078,  0.9894902 ,  1.        ],
>>       [ 1.        ,  1.        ,  1.        ,  1.        ]])
>>
>> Might be that there was 'red' misspelled in gist_rainbow in you mpl
>> version, this may explain the behaviour if we track it down.  Can you
>> do the following to verify this:
>>
>> import matplotlib._cm
>> print matplotlib._cm._gist_stern_data
>>
>> ? Thx,
>> Friedrich
>>
>
> Thanks a lot for your detailed response!
> In previous posts I did give the version: '1.0.svn'. Then I installed
> the latest stable version. Here is the version info:
>>>> print matplotlib.__version__
> 1.0.0
>
> However, the error is still there.
>
> You could not reproduce the error in your code, because you did not
> specify 'lut' when you call get_cmap
> try this:
> maps=[m for m in matplotlib.cm.datad if not m.endswith("_r")]
> for i in maps:
>        try:
>                a=matplotlib.cm.get_cmap(i,256)(range(256))
>        except:
>                (type, value, traceback) = sys.exc_info()
>                print "Problems to create %s" % (i,)
>                print "The error was --> %s: %s" % (type, value)
> u will reproduce the error.
>
> Thanks very much to point out I could actually print the colormap
> definition-data.
> I printed all of them, and found out the colormaps invoking errors are
> all tuples but not dictionaries and all other colormaps are actually
> dictionaries.
> ###Examples without Errors###
> ###They are all dictionaries###
> print matplotlib._cm._gist_stern_data
> {'blue': ((0.0, 0.0, 0.0), (0.5, 1.0, 1.0), (0.73499999999999999, 0.0,
> 0.0), (1.0, 1.0, 1.0)), 'green': ((0, 0, 0), (1, 1, 1)), 'red': ((0.0,
> 0.0, 0.0), (0.054699999999999999, 1.0, 1.0), (0.25, 0.027, 0.25),
> (1.0, 1.0, 1.0))}
> print matplotlib._cm._jet_data
> {'blue': ((0.0, 0.5, 0.5), (0.11, 1, 1), (0.34000000000000002, 1, 1),
> (0.65000000000000002, 0, 0), (1, 0, 0)), 'green': ((0.0, 0, 0),
> (0.125, 0, 0), (0.375, 1, 1), (0.64000000000000001, 1, 1),
> (0.91000000000000003, 0, 0), (1, 0, 0)), 'red': ((0.0, 0, 0),
> (0.34999999999999998, 0, 0), (0.66000000000000003, 1, 1),
> (0.89000000000000001, 1, 1), (1, 0.5, 0.5))}
> ###Colormaps invoking Errors###
> ###They are all Tuples###
> Problems to create gist_rainbow
> ((0.0, (1.0, 0.0, 0.16)), (0.029999999999999999, (1.0, 0.0, 0.0)),
> (0.215, (1.0, 1.0, 0.0)), (0.40000000000000002, (0.0, 1.0, 0.0)),
> (0.58599999999999997, (0.0, 1.0, 1.0)), (0.77000000000000002, (0.0,
> 0.0, 1.0)), (0.95399999999999996, (1.0, 0.0, 1.0)), (1.0, (1.0, 0.0,
> 0.75)))
> The error was --> <type 'exceptions.TypeError'>: tuple indices must be
> integers, not str
> Problems to create terrain
> ((0.0, (0.20000000000000001, 0.20000000000000001,
> 0.59999999999999998)), (0.14999999999999999, (0.0,
> 0.59999999999999998, 1.0)), (0.25, (0.0, 0.80000000000000004,
> 0.40000000000000002)), (0.5, (1.0, 1.0, 0.59999999999999998)), (0.75,
> (0.5, 0.35999999999999999, 0.33000000000000002)), (1.0, (1.0, 1.0,
> 1.0)))
> The error was --> <type 'exceptions.TypeError'>: tuple indices must be
> integers, not str
> Problems to create bwr
> ((0.0, 0.0, 1.0), (1.0, 1.0, 1.0), (1.0, 0.0, 0.0))
> The error was --> <type 'exceptions.TypeError'>: tuple indices must be
> integers, not str
> Problems to create brg
> ((0.0, 0.0, 1.0), (1.0, 0.0, 0.0), (0.0, 1.0, 0.0))
> The error was --> <type 'exceptions.TypeError'>: tuple indices must be
> integers, not str
> Problems to create seismic
> ((0.0, 0.0, 0.29999999999999999), (0.0, 0.0, 1.0), (1.0, 1.0, 1.0),
> (1.0, 0.0, 0.0), (0.5, 0.0, 0.0))
> The error was --> <type 'exceptions.TypeError'>: tuple indices must be
> integers, not str

------------------------------------------------------------------------------
Download new Adobe(R) Flash(R) Builder(TM) 4
The new Adobe(R) Flex(R) 4 and Flash(R) Builder(TM) 4 (formerly 
Flex(R) Builder(TM)) enable the development of rich applications that run
across multiple browsers and platforms. Download your free trials today!
http://p.sf.net/sfu/adobe-dev2dev
_______________________________________________
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel

Reply via email to