The last line of the "on_changed" method you posted is

       mappable.set_colorbar(cb, cax)

And "set_colorbar" sets the colorbar attribute.

-JJ

On Tue, Feb 16, 2010 at 8:46 AM, Nico Schlömer <nico.schloe...@gmail.com> wrote:
> Works pretty well.
> I've now implemented something like
>
> ========================== *snip* ==========================
> def find_associated_colorbar( obj ):
>      for child in obj.get_children():
>              try:
>                      cbar = child.colorbar
>              except AttributeError:
>                      continue
>              if not cbar == None: # really necessary?
>                      # if fetch was successful, cbar contains
>                      # ( reference to colorbar, reference to axis
> containing colorbar )
>                      return cbar[0]
>      return None
> ========================== *snip* ==========================
>
> How did you find out about the colormap attribute? Was that by taking
> a good guess in looking at the source code, or are the public
> attributes of a class documented?
>
> Cheers,
> Nico
>
>
>
> On Tue, Feb 16, 2010 at 1:18 PM, Jae-Joon Lee <lee.j.j...@gmail.com> wrote:
>> set_colorbar sets colorbar attribute. So I guess you can just check if
>> Mappable.colorbar is None or not.
>> Mappable.colorbar, when set, should be a tuple whose first item is an
>> image for colorbar and the second item is an colorbar axes.
>>
>> Regards,
>>
>> -JJ
>>
>> On Tue, Feb 16, 2010 at 5:26 AM, Nico Schlömer <nico.schloe...@gmail.com> 
>> wrote:
>>> Alright, so I dug the sources a bit and found the snippet
>>>
>>> ========================== *snip* ==========================
>>>        cb = cbar.Colorbar(cax, mappable, **kw)
>>>
>>>        def on_changed(m):
>>>            #print 'calling on changed', m.get_cmap().name
>>>            cb.set_cmap(m.get_cmap())
>>>            cb.set_clim(m.get_clim())
>>>            cb.update_bruteforce(m)
>>>
>>>        self.cbid = mappable.callbacksSM.connect('changed', on_changed)
>>>        mappable.set_colorbar(cb, cax)
>>> ========================== *snap* ==========================
>>>
>>> I guess what happens is that a Colorbar is created, and a callback
>>> function registered which adapts this very color bar whenever there is
>>> a change in color maps/limits.
>>> Well. -- I reckon that means that at the moment there's no way to tell
>>> if a ScalarMappable has a color bar associated or not. :/ -- At least
>>> I don't see how it would be possible to dig up on_changed( ) from the
>>> list of callbacks and extract cb from it.
>>>
>>> Aaand everybody: "Fea-ture request, fea-ture request!"
>>> get_colorbar() for ScalarMappables :)
>>>
>>> Cheers,
>>> Nico
>>>
>>>
>>>
>>>
>>> On Mon, Feb 15, 2010 at 7:58 PM, Nico Schlömer <nico.schloe...@gmail.com> 
>>> wrote:
>>>>> As far as I can see, it is the other way around, i.e., mappables
>>>>> (e.g., images) know about the colorbar they are connected.
>>>>
>>>> Well yeah, that'd be even better. I'll check out the API. -- Hints
>>>> would still be appreciated of course.
>>>>
>>>> --Nico
>>>>
>>>
>>
>

------------------------------------------------------------------------------
SOLARIS 10 is the OS for Data Centers - provides features such as DTrace,
Predictive Self Healing and Award Winning ZFS. Get Solaris 10 NOW
http://p.sf.net/sfu/solaris-dev2dev
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to