使用Python切片和绘制3D数组

时间:2013-12-05 09:48:45

标签: python plot slice

我是python中的新手,之前是MATLAB用户。如果我的问题很明显,我很抱歉。 我有一个巨大的47MB文件,包含3D阵列(351:467:300)。这是来自相机的300张图像。我想重新绘制它们作为一种动画。基本上,只需切片并绘制所有300张图像。这是我的代码

import numpy as np
import time
import matplotlib.pyplot as plt
import scipy.io as c
datafile = c.loadmat('data.mat') # loading data
img = datafile['img'] # extracting the (351:467:300) array 
imgShape = np.shape(img) 
for i in range(0,imgShape(2)):
    plt.imshow(img[:,:,i])
    time.sleep(0.3)
    plt.draw()

print('Done!')

问题是:当谈到imshow时,数字窗口是黑色的并且没有响应直到它完成循环,所以我看不到任何东西。怎么解决这个?如何强制它“在线”更新?

与matlab相比,绘图是非常慢的(不是因为time.sleep :)我试过没有:))循环运行得非常慢。我正在使用Spyder,这是一个原因吗?

提前多多感谢!

1 个答案:

答案 0 :(得分:0)

使用以下更正:
你需要让它互动。

import numpy as np
#import time
#import matplotlib.pyplot as plt
import scipy.io as c
import pylab as pl                     #added 

datafile = c.loadmat('data.mat') # loading data
img = datafile['img'] # extracting the (351:467:300) array 
imgShape = np.shape(img) 
pl.ion()                               #added 
for i in range(imgShape(2)):           #no need for 0
    pl.cla()                           #added
    pl.imshow(img[:,:,i])
#    time.sleep(0.3) 
    pl.draw()
    pl.pause(0.3)                      #added   
pl.ioff()                              #added
print('Done!')