我想做的是讓腳本計(jì)算一些東西,準(zhǔn)備一個(gè)繪圖,并將已經(jīng)獲得的結(jié)果顯示為pylab.figure-在python 2(特別是python 2.7)中,帶有穩(wěn)定的matplotlib(即1.1.1)。在python 3(具有matplotlib git build ...版本1.2.x的python 3.2.3)中,這很好用。作為一個(gè)簡(jiǎn)單的示例(通過(guò)time.sleep()模擬冗長(zhǎng)的計(jì)算),請(qǐng)考慮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中)中,代碼運(yùn)行干凈,沒(méi)有錯(cuò)誤,但未顯示該圖。python2解釋器的一些嘗試和錯(cuò)誤似乎建議將pylab.draw()替換為pylab.show();。顯然,這樣做一次就足夠了(不像在每次更改/添加繪圖后使用draw調(diào)用它一樣)。因此: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)但是,這也不起作用。再次,它運(yùn)行得很干凈,但未顯示該圖。似乎只有在等待用戶輸入時(shí)才這樣做。我不清楚為什么會(huì)這樣,但是當(dāng)將raw_input()添加到循環(huán)中時(shí),該圖終于顯示了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()這樣,該腳本當(dāng)然會(huì)在顯示繪圖時(shí)等待用戶輸入,并且不會(huì)在用戶點(diǎn)擊輸入之前繼續(xù)計(jì)算數(shù)據(jù)。當(dāng)然,這不是故意的。這可能是由于不同版本的matplotlib(1.1.1和1.2.x)或不同的python版本(2.7.3和3.2.3)引起的。使用穩(wěn)定的(1.1.1)matplotlib的python 2有什么方法可以完成,上面的腳本(第一個(gè))在python 3的matplotlib 1.2.x中做什么:-計(jì)算數(shù)據(jù)(在上面的示例中需要一些時(shí)間)在循環(huán)或迭代函數(shù)中由time.sleep())模擬,并且-(盡管仍在計(jì)算中)顯示了先前迭代中已經(jīng)計(jì)算的內(nèi)容-并沒(méi)有打擾用戶繼續(xù)按Enter鍵以繼續(xù)計(jì)算謝謝; 我將不勝感激...
添加回答
舉報(bào)
0/150
提交
取消