亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

python 2中的pylab.ion(),matplotlib 1.1.1和程序運行時的繪圖更新

python 2中的pylab.ion(),matplotlib 1.1.1和程序運行時的繪圖更新

嗶嗶one 2019-09-26 11:09:04
我想做的是讓腳本計算一些東西,準備一個繪圖,并將已經獲得的結果顯示為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鍵以繼續計算謝謝; 我將不勝感激...
查看完整描述

2 回答

?
楊__羊羊

TA貢獻1943條經驗 獲得超7個贊

pause正如@tcaswell建議的那樣,某些后端(以我的經驗“ Qt4Agg”)需要此功能。

其他后端(以我的經驗為“ TkAgg”)似乎只是在draw()不需要的情況下進行更新pause。因此,另一種解決方案是切換您的后端,例如使用matplotlib.use('TkAgg')


查看完整回答
反對 回復 2019-09-26
  • 2 回答
  • 0 關注
  • 766 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號