On Tue, Jan 14, 2014 at 12:04 PM, Michael Droettboom <md...@stsci.edu>wrote:

>
> I hope all of the above makes sense...
>

Definitely makes sense: what I've built-up in mpld3 is essentially
something that mimics this sort of visitor pattern, though it misses some
things because of the draw-time difficulties you mention.
I think a two-stage draw() would be a _very_ helpful restructure.
 Currently, I'm forced to achieve this result by writing a png to a
throwaway byte-stream...
   Jake


>
> Mike
>
>
> On 01/14/2014 01:30 PM, Jacob Vanderplas wrote:
>
> Thanks - we'll make it happen at some point.
>
>  Perhaps I can give the seed for a discussion: the stuff I've been doing
> with mpld3 is a lot of fun, but it's fundamentally limited by the fact that
> I have to dig around the internals of the figure object to find the
> relevant information to construct a plot representation.  I may be able to
> do the same thing by creating a backend, but the problem is that the draw()
> methods of most objects call the renderer with no reference to whether the
> points lie in the data space or figure space: that is, paths and points are
> usually specified in figure/pixel coordinates or some transformed version
> thereof, which makes it near impossible to construct interactive
> representations absent Python kernel callbacks.
>
>  What I'd love to see is some enhancement of the backend framework where
> there are some extra flags and information passed to the renderer: i.e. for
> each draw command, we need to know whether the drawn object should be
> linked to static figure coordinates or to dynamic axes/data coordinates.
>
> I've been in touch with Cyrille Rossant from the vispy team, Chris
> Beaumont from the Glue team, and Matt Sundwuist from the plotly team, all
> of whom asked if there might be a way to use what I've done with mpld3 to
> enable matplotlib to export into their own front-end format.  I didn't
> start mpld3 with that sort of extensibility in mind, but I'm starting to
> invest some time thinking about how to design that.
>
>  With the current matplotlib package, I think there are two ways to
> accomplish it: one is to create a general backend-like interface based on
> the figure introspection that mpld3 currently uses.  The artist elements in
> each figure contain enough information to be able to infer whether the
> elements should move & zoom with the axes or not.  The problem is, a lot of
> elements (like legends, axes aspects, etc.) are not fully established until
> the draw() command is called, so there are a few ugly hacks required to
> make it happen.
>
>  The other option is to use an even uglier hack, and wrap the current
> backend framework with an object that somehow links back into the figure
> and infers from the draw_*() commands whether the path/point/marker/etc.
> should be drawn in static figure coordinates or in dynamic axes
> coordinates. I've started a simple prototype backend translator which has a
> renderer class that uses ``inspect`` back-trace the stack and accomplish
> this: It's really ugly, and I'm not particularly proud about it, but I
> think it's the current best way to accomplish the desired behavior.
>
>  Ugly hacks aside, I think all of this points to a general desire for a
> new type of backend-like hook that can export dynamic plot elements in data
> coordinates, and static plot elements in figure coordinates.  An
> enhancement in that direction could pave the way for a lot of interesting
> interactive front-ends to matplotlib figures.
>
>  Anyway - if any of you have suggestions or responses to this, I'd love
> to hear them! Thanks,
>    Jake
>
>
> On Tue, Jan 14, 2014 at 9:11 AM, Michael Droettboom <md...@stsci.edu>wrote:
>
>>  Jake: I'd definitely like to get you into one of these calls at some
>> point.  If you're able to pop in late, that would still be great -- or we
>> can save that for another date.  Trying to get Japan, three NA timezones
>> and the UK all together is challenging ;)
>>
>> In any event, with Thomas, Ben, Michiel and myself confirmed, I think
>> that's enough to go ahead, and hopefully others who have yet to respond can
>> join as well.
>>
>> Mike
>>
>>
>> On 01/14/2014 11:57 AM, Jacob Vanderplas wrote:
>>
>> I'll probably not be able to swing 6am on the west coast, but other folks
>> are more important for this call, I think :)
>>    Jake
>>
>>
>> On Tue, Jan 14, 2014 at 8:51 AM, Benjamin Root <ben.r...@ou.edu> wrote:
>>
>>> That would actually work a little bit better for me... I just have to
>>> remember to get into work a little bit earlier.
>>>
>>>  Ben
>>>
>>> On Tue, Jan 14, 2014 at 11:36 AM, Michael Droettboom <md...@stsci.edu>wrote:
>>>
>>>> I'm fine with starting the meeting an hour early.  How about others?
>>>>
>>>> Mike
>>>>
>>>> On 01/14/2014 04:57 AM, Michiel de Hoon wrote:
>>>> > I can join this Thursday if we start with the discussion on timers.
>>>> > If we can start 1 hour earlier (14:00 UTC, 9 am ET, 23:00 in Japan)
>>>> that would be even better.
>>>> > -Michiel.
>>>> >
>>>> >
>>>> >
>>>> > --------------------------------------------
>>>> > On Mon, 1/13/14, Michael Droettboom <md...@stsci.edu> wrote:
>>>> >
>>>> >   Subject: [matplotlib-devel] Meeting...?
>>>> >   To: "matplotlib-devel@lists.sourceforge.net" <
>>>> matplotlib-devel@lists.sourceforge.net>
>>>> >   Date: Monday, January 13, 2014, 11:36 AM
>>>> >
>>>> >   It's probably a good time to schedule
>>>> >   another matplotlib Google Hangout.
>>>> >
>>>> >   Is this Thursday at 1500 UTC (10 am ET) too short notice for
>>>> >   the usual
>>>> >   candidates?
>>>> >
>>>> >   I know there was discussion of getting Michiel de Hoon on
>>>> >   today (which I
>>>> >   just saw, unfortunately).  Is there another time in the
>>>> >   future that
>>>> >   works for you, Michiel?
>>>> >
>>>> >   Mike
>>>> >
>>>> >   --
>>>> >
>>>> >       _
>>>> >   |\/|o _|_  _. _ | | \.__  __|__|_|_  _
>>>> >   _ ._ _
>>>> >   |  ||(_| |(_|(/_| |_/|(_)(/_|_ |_|_)(_)(_)| | |
>>>> >
>>>> >   http://www.droettboom.com
>>>> >
>>>> >
>>>> >
>>>> ------------------------------------------------------------------------------
>>>> >   CenturyLink Cloud: The Leader in Enterprise Cloud Services.
>>>> >   Learn Why More Businesses Are Choosing CenturyLink Cloud
>>>> >   For
>>>> >   Critical Workloads, Development Environments &
>>>> >   Everything In Between.
>>>> >   Get a Quote or Start a Free Trial Today.
>>>> >
>>>> http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk
>>>> >   _______________________________________________
>>>> >   Matplotlib-devel mailing list
>>>> >   Matplotlib-devel@lists.sourceforge.net
>>>> >   https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
>>>> >
>>>>
>>>>
>>>> --
>>>>                     _
>>>> |\/|o _|_  _. _ | | \.__  __|__|_|_  _  _ ._ _
>>>> |  ||(_| |(_|(/_| |_/|(_)(/_|_ |_|_)(_)(_)| | |
>>>>
>>>> http://www.droettboom.com
>>>>
>>>>
>>>>
>>>> ------------------------------------------------------------------------------
>>>> CenturyLink Cloud: The Leader in Enterprise Cloud Services.
>>>> Learn Why More Businesses Are Choosing CenturyLink Cloud For
>>>> Critical Workloads, Development Environments & Everything In Between.
>>>> Get a Quote or Start a Free Trial Today.
>>>>
>>>> http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk
>>>> _______________________________________________
>>>> Matplotlib-devel mailing list
>>>> Matplotlib-devel@lists.sourceforge.net
>>>> https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
>>>>
>>>
>>>
>>>
>>> ------------------------------------------------------------------------------
>>> CenturyLink Cloud: The Leader in Enterprise Cloud Services.
>>> Learn Why More Businesses Are Choosing CenturyLink Cloud For
>>> Critical Workloads, Development Environments & Everything In Between.
>>> Get a Quote or Start a Free Trial Today.
>>>
>>> http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk
>>> _______________________________________________
>>> Matplotlib-devel mailing list
>>> Matplotlib-devel@lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
>>>
>>>
>>
>>
>> --
>>                    _
>> |\/|o _|_  _. _ | | \.__  __|__|_|_  _  _ ._ _
>> |  ||(_| |(_|(/_| |_/|(_)(/_|_ |_|_)(_)(_)| | |
>> http://www.droettboom.com
>>
>>
>
>
> --
>                    _
> |\/|o _|_  _. _ | | \.__  __|__|_|_  _  _ ._ _
> |  ||(_| |(_|(/_| |_/|(_)(/_|_ |_|_)(_)(_)| | |
> http://www.droettboom.com
>
>
------------------------------------------------------------------------------
CenturyLink Cloud: The Leader in Enterprise Cloud Services.
Learn Why More Businesses Are Choosing CenturyLink Cloud For
Critical Workloads, Development Environments & Everything In Between.
Get a Quote or Start a Free Trial Today. 
http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk
_______________________________________________
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel

Reply via email to