2012-01-26 183 views
55

我想保存使用matplotlib繪製的圖;但是,圖像保存爲空白。Matplotlib(pyplot)savefig輸出空白圖像

這裏是我的代碼:

plt.subplot(121) 
plt.imshow(dataStack, cmap=mpl.cm.bone) 

plt.subplot(122) 
y = copy.deepcopy(tumorStack) 
y = np.ma.masked_where(y == 0, y) 

plt.imshow(dataStack, cmap=mpl.cm.bone) 
plt.imshow(y, cmap=mpl.cm.jet_r, interpolation='nearest') 

if T0 is not None: 
    plt.subplot(123) 
    plt.imshow(T0, cmap=mpl.cm.bone) 

    #plt.subplot(124) 
    #Autozoom 

#else: 
    #plt.subplot(124) 
    #Autozoom 

plt.show() 
plt.draw() 
plt.savefig('tessstttyyy.png', dpi=100) 

而且tessstttyyy.png是空白的(也試圖以.jpg)

回答

107

首先,會發生什麼時T0 is not None?我會測試一下,然後我會調整我傳遞給plt.subplot()的值;也許嘗試值131,132和133,或取決於是否存在T0的值。

二,調用plt.show()後,創建一個新圖形。爲了解決這個問題,你可以

  1. 呼叫plt.savefig('tessstttyyy.png', dpi=100)打電話之前plt.show()

  2. show()之前保存的數字通過調用plt.gcf()爲「讓目前的數字」,那麼你就可以在這個Figure對象調用savefig()隨時。

例如:

fig1 = plt.gcf() 
plt.show() 
plt.draw() 
fig1.savefig('tessstttyyy.png', dpi=100) 

在你的代碼,因爲它節省了新的人物,到什麼也沒有繪製「tesssttyyy.png」是空白。

+0

忘了刪除T0部分...這是以前評論。 – tylerthemiler

+1

是的,我完全刪除了該節目,它的工作,雖然有道理...... – tylerthemiler

+1

這是偉大的,像一個魅力的作品 – denvar

11

plt.show()要來後plt.savefig()