I'm trying to do an animation which plots a large number of items on 
two dimensions, and then animates their positions over time.  I have 
set up the plot with my dimensions on the axes and am using 
canvas.blit (as shown in one of the examples) to update my plot.  I'm 
using text as the markers --- that is, I use the text function to 
display the label of each item (not just a point) at its location on 
the graph.

        The problem is that I have a large amount of data.  There are over 
100,000 "steps" in my time sequence (i.e., places where I might need 
to update the display because some item moved), and even though not 
all of those actually result in a change in the positions, there are 
still several thousand distinct items that need to be plotted and 
moved around.  I'm currently buffering this a bit so that I only 
update on every Nth data point, but it's still rather slow.

        I can see one obvious, issue, but I'm not sure how to work around it. 
  The thing is that a large number of the items don't actually move 
around very much over time, and even if one does move around 
relatively frequently, there may be long stretches where it doesn't. 
Yet, on every display update, I am redrawing all 1000+ artists.  I 
feel like there should be some way to move only the points that need 
to be moved, but I'm not sure how to do it.  My idea for how to 
improve it is that, for each display update, I would look at which 
bits of text actually do need to move, look at where they currently 
are, calculate which other texts overlap with those moving, then blit 
a blank rectangle onto the "old" positions of the moving items, and 
redraw only the moving items and those that were partially erased by 
the blank.  This way items that were nowhere near any change wouldn't 
need to be redrawn.

        Is this feasible?  Is there a standard way to go about this?  Is 
there any way to figure out which artists overlap without looping over 
the list of all artists and checking the bbox bounds?  Any other 
suggestions on how to do it?

Thanks,
-- 
Brendan Barnwell
"Do not follow where the path may lead.  Go, instead, where there is 
no path, and leave a trail."
    --author unknown

------------------------------------------------------------------------------
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