[wxPython-users] Suitable for high speed plotting?

Chris.Barker at noaa.gov Chris.Barker at noaa.gov
Thu Sep 27 23:43:09 PDT 2007


Jay Parlar wrote:
> Our first run at it was using matplotlib with wx, but the update was
> horrendous (roughly 2 fps).

hmm. MPL is pretty slow, but that's worse than it should be. Were you 
using wxAgg or plain wx?

> def Draw(self, DC):
>         DC = wx.PaintDC(self)
>         DC.SetBackground(wx.Brush("White"))
>         DC.Clear()
> 
>         GC = wx.GraphicsContext.Create(DC)

GraphicsContext is pretty slow (though it shouldn't be on OS-X). Have 
you tried a regular old DC?

> I update self.points in the event handler, and it will always consist
> of 500 (X,Y) tuples. So essentially, I'm trying to draw a 500 point
> line 20 times per second.

That should be totally doable.

> Is this the best way to do this? Anyone have any hints for going
> faster, and using less CPU?

try a plain DC.

If you want fancier features, you could try wx.lib.floatcanvas. It uses 
a plain old DC for drawing, and can easily do 20Hz for a 500 point line. 
It also uses numpy which can be wonderful for this kind of thing.

For more info on FloatCanvas:

http://morticia.cs.dal.ca/FloatCanvas/

There are a bunch of additional demos in SVN (and the latest release). 
Check out the MovingPlot.py demo.

-Chris




-- 
Christopher Barker, Ph.D.
Oceanographer

Emergency Response Division
NOAA/NOS/OR&R            (206) 526-6959   voice
7600 Sand Point Way NE   (206) 526-6329   fax
Seattle, WA  98115       (206) 526-6317   main reception

Chris.Barker at noaa.gov






More information about the wxpython-users mailing list