2012-08-07 53 views
2

我有这段代码用于从一系列矩阵创建一系列图像,并且在每个图像中我想添加特定文本。这是我的典型代码:Python将文本添加到matplotlib.image.AxesImage实例

ax = axes([0,0,1,1]) 

for i in range(0,5): 
    text(1,1,str(i)) 
    ax.imshow(a[:,:,i],origin='lower') 
    savefig(str("%04d" % int(i))+'.png',format="png") 
    del ax.texts[-1] 

但问题是,随着迭代数量的增加,速度死亡,它变得如此如此缓慢。似乎在后台打开很多窗口是有问题的。

有什么建议吗?

+0

你把这个整理出来了吗? – tacaswell 2013-10-05 00:38:28

回答

0

我只是说这一条线上的循环结束,现在工作得很好。这只不过是在记忆中积累了前所未有的数字的问题。

ax = axes([0,0,1,1]) 

for i in range(0,5): 
    text(1,1,str(i)) 
    ax.imshow(a[:,:,i],origin='lower') 
    savefig(str("%04d" % int(i))+'.png',format="png") 
    del ax.texts[-1] 
    close(gcf()) 
0

而不是创建一个新的图像和文本对象每个循环重用对象。

ax = axes([0,0,1,1]) 
t = text(1,1,str(0)) 
img = ax.imshow(a[:,:,0],origin='lower') 

for i in range(0,5): 
    t.set_text(str(i) 
    img.set_data(a[:,:,i]) 
    savefig(str("%04d" % int(i))+'.png',format="png") 

也看到

Visualization of 3D-numpy-array frame by frame

+0

Thanx的答案!我只是添加关闭(gcf()),它的工作原理。我也试过你的,速度是一样的。但对于你的情况,我们必须定义一个新的图形对象来工作。 – Mojtaba 2012-08-08 15:37:21

+0

如果这解决了您的问题,请接受它,如果您使用了不同的解决方案,请发布您使用的内容并接受您自己的答案。 – tacaswell 2013-08-18 19:37:25