Fast updating Matplotlib plots
The basic structure for a rapidly updating animated plot with Matplotlib, without using
matplotlib.animation
is described below for imshow()
and pcolormesh()
.
NOTE: matplotlib.pyplot.draw()
only takes effect on the CURRENT (most recently called) axes.
If updating multiple axes, call draw()
after each set of axes is modified.
Both examples assume:
from matplotlib.pyplot import figure, draw, pause
# imgs is a N x X x Y image stack
fg = figure()
ax = fg.gca()
If the pause()
statement time is too small, Matplotlib may not update the plot at all.
Consider your display may not be able to update faster than about pause(0.01)
.
More examples with speed comparison showing that imshow is faster than pcolormesh generally.
imshow:
h = ax.imshow(imgs[0]) # set initial display dimensions
for img in imgs:
h.set_data(img)
draw(), pause(1e-3)
pcolormesh:
h = ax.pcolormesh(imgs[0]) # set initial display dimensions
for img in imgs:
h.set_array(img.ravel())
draw(), pause(1e-3)