2014-05-02 77 views
3

我的代碼讀取兩個數字文件,並在窗口上部的繪圖窗口中動態繪製它們。 我也在劇情下面放了一張桌子。 我想在繪製它們時獲取最新值,並用這些數字更新表格中的單元格。 表格在第一次調用「set_text」時會在屏幕上更新,但即使表正在更新,屏幕上顯示的內容也不會保持更改。 我需要添加什麼才能讓表格在更新時顯示值。如何動態更新matplotlib表格單元格文本

<snip> 
def update_line(num, sdata, line1, d2data, line2, my_table): 
    for i in range(0, num): 
     line1.set_data(sdata[0, :num], sdata[1,:num]) 
     line2.set_data(d2data[0, :num], d2data[1,:num]) 
    tm.sleep(0.1) 
    tmp = sdata[1, num] 
    my_table._cells[(1, 1)]._text.set_text(tmp) 
    return line1,line2, my_table, 

line_ani = animation.FuncAnimation(fig, update_line, 149, fargs=(d2data, f, d1data,l, the_table), interval=1, blit=True, repeat=False) 

plt.show() 

This shows the resulting figure. Note that the red/blue lines animate and draw over several seconds

+1

代碼太多,文字太多。不要告訴我們你可以做什麼。請花點時間清楚說明您的問題,並刪除所有不相關的不必要代碼。 –

+0

我發現這些論壇的工作代碼對初學者非常有用。我以爲我會分享回來。 但足夠合理......設置update_line函數底部附近的表格單元格的行似乎只能通過 – user3597723

+0

第一次運行請修復您的問題。如果你把問題搞亂,對任何人都沒有用。無論你吹噓自己能做什麼都對任何人都有用。按照我的說法編輯你的問題 - 刪除幾乎所有的東西,只留下那些相關的東西。還要在問題文本中明確說明你的困惑,而不是在評論中。 –

回答

1

原則上線my_table._cells[(1, 1)]._text.set_text(tmp)應該更新的表單元格數據。它不在這裏工作的原因是使用blitting。在呼叫FuncAnimationblit=False時關閉blitting可能會有所幫助。如果這不能解決問題,則需要在循環內使用fig.canvas.draw()手動執行動畫。