我想做的是讓腳本計算一些東西,準備一個繪圖,并將已經獲得的結果顯示為pylab.figure-在python 2(特別是python 2.7)中,帶有穩定的matplotlib(即1.1.1)。在python 3(具有matplotlib git build ...版本1.2.x的python 3.2.3)中,這很好用。作為一個簡單的示例(通過time.sleep()模擬冗長的計算),請考慮import pylabimport timeimport random
dat=[0,1]pylab.plot(dat)pylab.ion()pylab.draw() for i in range (18):
dat.append(random.uniform(0,1))
pylab.plot(dat)
pylab.draw()
time.sleep(1)在python 2(版本2.7.3和matplotlib 1.1.1中)中,代碼運行干凈,沒有錯誤,但未顯示該圖。python2解釋器的一些嘗試和錯誤似乎建議將pylab.draw()替換為pylab.show();。顯然,這樣做一次就足夠了(不像在每次更改/添加繪圖后使用draw調用它一樣)。因此:import pylabimport timeimport random
dat=[0,1]pylab.plot(dat)pylab.ion()pylab.show() for i in range (18):
dat.append(random.uniform(0,1))
pylab.plot(dat)
#pylab.draw()
time.sleep(1)但是,這也不起作用。再次,它運行得很干凈,但未顯示該圖。似乎只有在等待用戶輸入時才這樣做。我不清楚為什么會這樣,但是當將raw_input()添加到循環中時,該圖終于顯示了import pylabimport timeimport random
dat=[0,1]pylab.plot(dat)pylab.ion()pylab.show() for i in range (18):
dat.append(random.uniform(0,1))
pylab.plot(dat)
#pylab.draw()
time.sleep(1)
raw_input()這樣,該腳本當然會在顯示繪圖時等待用戶輸入,并且不會在用戶點擊輸入之前繼續計算數據。當然,這不是故意的。這可能是由于不同版本的matplotlib(1.1.1和1.2.x)或不同的python版本(2.7.3和3.2.3)引起的。使用穩定的(1.1.1)matplotlib的python 2有什么方法可以完成,上面的腳本(第一個)在python 3的matplotlib 1.2.x中做什么:-計算數據(在上面的示例中需要一些時間)在循環或迭代函數中由time.sleep())模擬,并且-(盡管仍在計算中)顯示了先前迭代中已經計算的內容-并沒有打擾用戶繼續按Enter鍵以繼續計算謝謝; 我將不勝感激...
添加回答
舉報
0/150
提交
取消