On Thu, Apr 23, 2009 at 2:32 PM, Elan Pavlov <epav...@gmail.com> wrote:
> Hi Jae-Joon,
> Thanks a ton! The problem is actually not the frequency of changes.
> The current method uses draw_artist on each update. However, the time
> for draw_artist is linear in the *number* of points so for graphs with
> a large amount of data it is extremely inefficient. Your patch means
> that update time is linear in the amount of data *updated* and not in
> the total amount of data.
> As for the ticks you have a point. In my application I actually want
> ticks to be shifted (as time goes on) so indeed this is what I want.

I was more concerned about yticks (when images are shifted in
x-direction). Anyhow, it should be not that difficult to handle this.

> In general ticks that are shifted out can be redrawn using set_data
> methods which are efficient since a tick can be defined as it's
> endpoints. Basically when first calling plot() I set all of the tick
> locators to Null and then just add ticks as a line (with two points)
> based on the desired spacing. Changing a tick location (or if desired
> redrawing it in the same location) is basically a call to
> set_(x|y)data and then draw_artist for a line with two points (or a
> line collection will *slightly* improve performance  if needed).
> Anyway, thanks again. I'll play around with it and let you know what I
> run into.

Yes, please.
If you find this useful, I'll try to push this into the trunk.

Regards,

-JJ


>
> Elan
> ---
> I can no other answer make but thanks,
> And thanks, and ever thanks.
>    -- William Shakespeare
>
> On Thu, Apr 23, 2009 at 1:21 PM, Jae-Joon Lee <lee.j.j...@gmail.com> wrote:
>> On Mon, Apr 20, 2009 at 4:34 PM, Elan Pavlov <e...@mit.edu> wrote:
>>> Hi,
>>>
>>> I'm trying to use matplotlib for animating data as it is received from an
>>> online source (online in the algorithmic sense not internet:). I'd like
>>> the graph plot to be updated with high frequency since the data changes
>>> rapidly. I've used the BufferRegion with copy_from_bbox / restore_region
>>> and it speeds up the plotting considerably but alas it's still not good
>>> enough (with a large number of graphs and a large number of data points in
>>> each graph).
>>>
>>
>> Well, if you need your plot updated with very high frequency, MPL may
>> not be your tool of choice.
>> Anyhow, my first recommendation is not to update the plot frequently.
>> I mean, do you have to update the plot for every changes? Can you
>> update it every 10th change, for example?
>>
>>> What I'd like to do is to utilize the fact that the animation is updated
>>> in a predictable fashion (i.e., scrolling off the screen to the left as
>>> new data arrives) in order to speed up the animation. The idea would be to
>>> copy the right 99% of the graph (or some other fraction) via some kind of
>>> function similar to copy_from_bbox, move it 1% to the left and then plot
>>> the new 1% of the data. The problem is that as far as I can tell the
>>> copy_from_bbox/restore_region does not actually allow changing the area in
>>> which it is restored. I've mucked around in the source files a bit but to
>>> no avail.
>>>
>>> My question is then:
>>> 1. Is there some other way to copy everything enclosed in a Bbox? or
>>> 2. Is there some way to modify the region in which data reappears when
>>> using restore_region?
>>> 3. Perhaps I'm missing something?
>>>
>>> I'm sure someone else has done this since it seems pretty natural and
>>> useful for a variety of applications.
>>
>> I'm attaching a patch that might do what you want to do.
>> It implements a "restore_bbox2" method which restores a subset of the
>> saved background at a specified position.
>> A small example is also attached (it is based on the gtk backend).
>>
>> I, personally, am not sure if this kind of feature is useful. If you
>> shift part of your figure, you have to be careful not to mess up with
>> the coordinate system. And also be careful about what to be shifted
>> and what to be not (e.g., ticks).
>>
>> If others find this useful, I'll commit this to the trunk with some
>> api improvement.
>>
>> Regards,
>>
>> -JJ
>>
>>
>>>
>>> Elan
>>> ----
>>> "If stupidity got us into this mess, why can't it get us out?"
>>>        - Will Rogers
>>>
>>> ------------------------------------------------------------------------------
>>> Stay on top of everything new and different, both inside and
>>> around Java (TM) technology - register by April 22, and save
>>> $200 on the JavaOne (SM) conference, June 2-5, 2009, San Francisco.
>>> 300 plus technical and hands-on sessions. Register today.
>>> Use priority code J9JMT32. http://p.sf.net/sfu/p
>>> _______________________________________________
>>> Matplotlib-users mailing list
>>> Matplotlib-users@lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/matplotlib-users
>>>
>>
>> ------------------------------------------------------------------------------
>> Stay on top of everything new and different, both inside and
>> around Java (TM) technology - register by April 22, and save
>> $200 on the JavaOne (SM) conference, June 2-5, 2009, San Francisco.
>> 300 plus technical and hands-on sessions. Register today.
>> Use priority code J9JMT32. http://p.sf.net/sfu/p
>> _______________________________________________
>> Matplotlib-users mailing list
>> Matplotlib-users@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/matplotlib-users
>>
>>
>
>
>
> --
> If I knew that a man was coming to my house with the conscious design
> of doing me good, I should run for my life.
> - Henry David Thoreau
>

------------------------------------------------------------------------------
Crystal Reports &#45; New Free Runtime and 30 Day Trial
Check out the new simplified licensign option that enables unlimited
royalty&#45;free distribution of the report engine for externally facing 
server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to