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