2012-08-07 50 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