2012-10-31 74 views
2

我瀏覽過「可能已經有你的答案的問題」,如果他們這樣做......我不明白這一點。matplotlib savefig()blank - show()不是

我試圖儘可能地消除,並簡化了我的問題到下面的代碼(我的道歉 - 我敢肯定,有一個更優雅的方式獲得所有40年代的numpy數組,但這是什麼我想出了敲我的頭後....):

import numpy 
import matplotlib.pyplot as plt 

x=numpy.zeros((500,256)) 
x+=40 
plt.title("Title") 
plt.xlabel("Label") 
plt.ylabel("Label") 
plt.imshow(x,vmin=37.5,vmax=42.5, cmap='spectral') 

#save the figure 
filename="/xxx/yyy/matplotlibtest.jpg" 
plt.savefig(filename) 
plt.show() 
plt.close() 

plt.savefig()返回我的標籤,一個非常漂亮的圖像,斧頭,並沒有數字(即矩形爲空)

plt.show()向我展示了上面所有的上面有一個很好的綠色矩形,它位於我的軸之間,就像它應該是的一樣。我可以手動將此圖保存到同一個目錄,並獲得我期望的結果(即軸,標籤,綠色矩形)。

我試過這個沒有顯示()或通過show()調用來第二次,因爲一些問題&在這裏(和其他地方)的答案似乎暗示呼叫順序可能是問題。

我把這段代碼中的其他數字(相同數據的直方圖)保存爲jpg,所以我知道這臺計算機可以保存爲jpg。

我不知道我在做什麼錯誤與savefig - 任何建議?

謝謝!

+0

我剛剛在不同的計算機上測試過這段代碼,它在哪裏工作。它不起作用的系統是Ubuntu 10.04,我的帳戶是未經洗刷的大衆的一部分(沒有特權)。我認爲這意味着它在Ubuntu的後端,儘管事實上它很高興地爲我保存了直方圖的數字。 –

回答

2

通過添加:

import matplotlib 
matplotlib.use('TkAgg') 

我的電話之前

import matplotlib.pyplot as plt 

我能夠得到的一切工作愉快。

(我不明白後端,但很明顯!)

相關問題