В случае, если кто-нибудь сталкивается с этой статьей в поисках того, что я искал, я нашел примеры на
Как визуализировать скалярные 2D-данные с помощью Matplotlib?
и
http://mri.brechmos.org/2009/07/automatically-update-a-figure-in-a-loop
(на web.archive.org)
затем изменил их, чтобы использовать imshow со входным стеком кадров вместо генерации и использования контуров на лету.
Начиная с трехмерного массива изображений формы (nBins, nBins, nBins), называемого frames
.
def animate_frames(frames):
nBins = frames.shape[0]
frame = frames[0]
tempCS1 = plt.imshow(frame, cmap=plt.cm.gray)
for k in range(nBins):
frame = frames[k]
tempCS1 = plt.imshow(frame, cmap=plt.cm.gray)
del tempCS1
fig.canvas.draw()
#time.sleep(1e-2) #unnecessary, but useful
fig.clf()
fig = plt.figure()
ax = fig.add_subplot(111)
win = fig.canvas.manager.window
fig.canvas.manager.window.after(100, animate_frames, frames)
Я также нашел гораздо более простой способ выполнить весь этот процесс, хотя и менее надежный:
fig = plt.figure()
for k in range(nBins):
plt.clf()
plt.imshow(frames[k],cmap=plt.cm.gray)
fig.canvas.draw()
time.sleep(1e-6) #unnecessary, but useful
Обратите внимание, что оба они работают только с ipython --pylab=tk
, a.k.a. backend = TkAgg
Спасибо за помощь во всем.