[IPython-dev] Interactive Matplotlib in the browser

Jason Grout jason-sage at creativetrax.com
Fri Oct 12 02:39:28 EDT 2012

On 10/11/12 10:45 PM, Brian Granger wrote:
> It is not clear to me that the stream of PNGs will win in the end.

What do you see as alternatives?  Reimplementing matplotlib in the 
browser?  SVG-based rendering, where we send over a complete svg image 
at each step (or just the changed svd elements)?  I'm curious what other 
ideas you have.

> you make a single static plot of a large data set, that is way better
> than trying to send the data to the browser and rendering it there.
> But if you have to send hundreds or thousands of PNGs to get
> interactivity, that benefit may be washed out.  Especially if you have
> multiple users interacting with plots - the server could quickly grind
> to a halt.  I think we should do tests to see how bad it gets, taking
> into account the multiple user question.  The one performance benefit
> that I can think of is that you can tune the level of interactivity to
> limit the data that comes back.  For large data sets, users might be
> willing to settle for less interactivity.  That option doesn't exist
> when you send all the data back.

I implemented server-side rate-limiting (see my most recent 
modifications at https://gist.github.com/3875846, for example).  Or are 
you saying that the server might not be able to render pngs for hundreds 
or thousands of users?  I wonder if we can get a better protocol than 
just a "Motion PNG" [1].

A disappointing thing is that it seems to take about 100ms to render the 
example png image; it would sure be nice if that was a lot faster.

[1] http://en.wikipedia.org/wiki/Motion_JPEG

More information about the IPython-dev mailing list