Re: [Matplotlib-users] Plotting speed and error when calling update() using TkAgg

2017-04-18 Thread Hjalmar Turesson
Thanks for the help (and sorry for the super-late reply).

I just tried blitting, but it doesn't really help. I cannot exceed 20 fps.
The problem is that I'm plotting data from a video file, so that for each
frame I need to draw a new array (not just a foreground). I think its just
to much data.

Thanks,
Hjalmar

On Sat, Jan 7, 2017 at 3:36 PM, Thomas Caswell <tcasw...@gmail.com> wrote:

> To push much past 20Hz you will want to look into blitting.  See
> http://matplotlib.org/devdocs/api/animation_api.html for a rough
> introduction on how to use blitting (and see the animation code for an
> example of handling all of the corner cases).
>
> Tom
>
> On Fri, Oct 14, 2016 at 5:29 PM Hjalmar Turesson <htures...@gmail.com>
> wrote:
>
>> That works fine. And it explains why update() only worked with the Qt
>> backends (I tried all). The speed is still not super impressive though (~20
>> fps), but I think I will just start skipping frames when playing at above
>> 20 fps.
>>
>> Thanks,
>> Hjalmar
>>
>> On Fri, Oct 14, 2016 at 10:37 AM, Thomas Caswell <tcasw...@gmail.com>
>> wrote:
>>
>> Instead of `canvas.update` call `self.im.figure.canvas.draw_idle()`.
>>
>> IIRC `update` is part of the API inherited from Qt, not part of the API
>> we ensure that all of the canvas objects have.
>>
>> Tom
>>
>> On Fri, Oct 7, 2016 at 4:48 PM Hjalmar Turesson <htures...@gmail.com>
>> wrote:
>>
>> Hi all,
>>
>>
>> I made a little video player using matplotlib. I need it to allow very
>> good control over the playback speed (e.g. direction, frame-by-frame
>> stepping and fast and slow).
>>
>> However, it's not very fast. Max frame rate I can achieve is 10-20 fps.
>> I followed Basti's advice on speeding up plotting (
>> http://bastibe.de/2013-05-30-speeding-up-matplotlib.html).
>> This resulted in a more than 2x improvement (from <5 to 10-20 fps), but I
>> would like to reach 40-50 fps.
>>
>> The core code is something like this:
>>
>> self.im.set_data(self.video_frame)
>>
>> self.text.set_text('some text')
>>
>>  self.ax.draw_artist(self.im)
>>  self.ax.draw_artist(self.text)
>>  self.im.figure.canvas.update()
>>  self.im.figure.canvas.flush_events()
>>
>> video_frame is a 200 x 250 array. I tried lowering dpi from 100 to 50,
>> but the improvement is marginal.
>>
>> I saw that Harden (http://www.swharden.com/wp/2013-04-15-fixing-slow-
>> matplotlib-in-pythonxy/) recommended using TkAgg over Qt4Agg since TkAgg
>> is supposed to be faster.
>> But, TkAgg doesn't play nicely with figure.canvas.update(). I get the
>> following error:
>> AttributeError: 'FigureCanvasTkAgg' object has no attribute 'update'
>> It works with Qt4Agg though.
>>
>> Does anyone have a fix for this? Or some general advice on how to speed
>> up playback speed?
>>
>> I tried with both matplotlib 1.5.1 and the current version from
>> github 2.0.0b4+2373.gb34c55d
>>
>> Best regards,
>> Hjalmar
>> 
>> --
>> Check out the vibrant tech community on one of the world's most
>> engaging tech sites, SlashDot.org! http://sdm.link/slashdot__
>> _
>> Matplotlib-users mailing list
>> Matplotlib-users@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/matplotlib-users
>>
>>
>>
--
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


[Matplotlib-users] Plotting speed and error when calling update() using TkAgg

2016-10-07 Thread Hjalmar Turesson
Hi all,


I made a little video player using matplotlib. I need it to allow very good
control over the playback speed (e.g. direction, frame-by-frame stepping
and fast and slow).

However, it's not very fast. Max frame rate I can achieve is 10-20 fps.
I followed Basti's advice on speeding up plotting (
http://bastibe.de/2013-05-30-speeding-up-matplotlib.html).
This resulted in a more than 2x improvement (from <5 to 10-20 fps), but I
would like to reach 40-50 fps.

The core code is something like this:

self.im.set_data(self.video_frame)

self.text.set_text('some text')

 self.ax.draw_artist(self.im)
 self.ax.draw_artist(self.text)
 self.im.figure.canvas.update()
 self.im.figure.canvas.flush_events()

video_frame is a 200 x 250 array. I tried lowering dpi from 100 to 50, but
the improvement is marginal.

I saw that Harden (
http://www.swharden.com/wp/2013-04-15-fixing-slow-matplotlib-in-pythonxy/)
recommended using TkAgg over Qt4Agg since TkAgg is supposed to be faster.
But, TkAgg doesn't play nicely with figure.canvas.update(). I get the
following error:
AttributeError: 'FigureCanvasTkAgg' object has no attribute 'update'
It works with Qt4Agg though.

Does anyone have a fix for this? Or some general advice on how to speed up
playback speed?

I tried with both matplotlib 1.5.1 and the current version from
github 2.0.0b4+2373.gb34c55d

Best regards,
Hjalmar
--
Check out the vibrant tech community on one of the world's most 
engaging tech sites, SlashDot.org! http://sdm.link/slashdot___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users