2014-05-02 45 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()手动执行动画。