Hi Mike,

Thanks for the suggestion - however, this doesn't change the FPS. From
my experiments so far, it seems using draw_artist would be the best
bet, but any ideas why it doesn't work with the MacOS X backend?

https://github.com/matplotlib/matplotlib/issues/166

Cheers,
Tom


On 24 June 2013 16:13, Michael Droettboom <md...@stsci.edu> wrote:
> Have you tried using "draw_idle"?  That will schedule the draw for the
> next time the event loop is idle.
>
> Mike
>
> On 06/24/2013 07:39 AM, Thomas Robitaille wrote:
>> Hi everyone,
>>
>> The following shows an example of a simple data viewer which includes
>> a slider, a bitmap, and a scatter plot:
>>
>> """
>> import numpy as np
>> from matplotlib import pyplot as plt
>> from matplotlib.widgets import Slider
>>
>> fig = plt.figure()
>>
>> ax1 = fig.add_axes([0.1, 0.1, 0.4, 0.7])
>> image = ax1.imshow(np.random.random((512, 512)), vmin=0., vmax=1.)
>>
>> ax2 = fig.add_axes([0.1, 0.9, 0.85, 0.05])
>> ax2.set_xticklabels("")
>> ax2.set_yticklabels("")
>> slider = Slider(ax2, "", 0., 1.)
>>
>> def update_vmax(value):
>>      image.set_clim(0., value)
>>      fig.canvas.draw()
>>
>> slider.on_changed(update_vmax)
>>
>> ax3 = fig.add_axes([0.55, 0.1, 0.4, 0.7])
>> x = np.random.random(10000)
>> y = np.random.random(10000)
>> ax3.scatter(x, y)
>>
>> plt.show()
>> """
>>
>> When moving the slider, the vmax of the image changes, but I get very
>> slow frame rates (~2/sec) on my computer with the MacOS X backend. I
>> was wondering whether people here have any tips on speeding things up?
>>
>> As far as I can figure out, this is slow because both the slider and
>> the callback function call ``fig.canvas.draw``. Slider calls it before
>> the callback function, so I definitely need to draw things in that
>> function, but I can get a factor of 2x speedup by doing
>>
>> slider.drawon = False
>>
>> which prevents ``canvas.draw()`` being called twice. However, this is
>> still much too slow, so I started to look into using ``draw_artist``
>> to only update elements that need updating, but this requires
>> partially re-implementing the Slider class.
>>
>> As a side note, using ``draw_artist`` also does not work on the MacOS X 
>> backend:
>>
>> https://github.com/matplotlib/matplotlib/issues/166
>>
>> but I'm willing to have a solution that wouldn't work on this backend
>> if it was the only way.
>>
>> Does anyone have a clean solution to increasing the frame rate of this 
>> example?
>>
>> Thanks!
>> Tom
>>
>> ------------------------------------------------------------------------------
>> This SF.net email is sponsored by Windows:
>>
>> Build for Windows Store.
>>
>> http://p.sf.net/sfu/windows-dev2dev
>> _______________________________________________
>> Matplotlib-users mailing list
>> Matplotlib-users@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/matplotlib-users
>
>
> ------------------------------------------------------------------------------
> This SF.net email is sponsored by Windows:
>
> Build for Windows Store.
>
> http://p.sf.net/sfu/windows-dev2dev
> _______________________________________________
> Matplotlib-users mailing list
> Matplotlib-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/matplotlib-users

------------------------------------------------------------------------------
This SF.net email is sponsored by Windows:

Build for Windows Store.

http://p.sf.net/sfu/windows-dev2dev
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to