【问题标题】:How to dynamically update a matplotlib table cell text如何动态更新 matplotlib 表格单元格文本
【发布时间】:2014-06-19 16:36:20
【问题描述】:

我的代码读取两个数字文件,并在窗口上部的绘图窗口中动态绘制它们。 我还在情节下方放了一张表格。 我想获取最新的值,因为它们被绘制并用这些数字更新表格中的单元格。 第一次调用“set_text”时,表格会在屏幕上更新,但屏幕上显示的内容不会不断变化,即使表格正在更新。 我需要添加什么才能让表格在更新时显示值。

<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

【问题讨论】:

  • 代码太多,文字太多。不要告诉我们你能做什么。请花点时间清楚地说明您的问题,并删除所有不相关的不必要代码。
  • 我发现这些论坛中的工作代码对初学者非常有用。我以为我会分享回来。但很公平......在 update_line 函数底部附近设置表格单元格的行似乎只在第一次通过
  • 请解决您的问题。如果你把你的问题弄得一团糟,这对任何人都没有用。你吹嘘你做什么对任何人都没有用。正如我告诉你的那样编辑你的问题 - 删除几乎所有内容,只留下相关的内容。还要在问题文本中明确说明您的问题,而不是在评论中。
  • 伟大的编辑!你已经显着改善了你的问题。现在您遵循 StackOverflow 标准。我正在撤消我原来的反对票。

标签: python python-2.7 matplotlib


【解决方案1】:

原则上my_table._cells[(1, 1)]._text.set_text(tmp) 应该更新表格单元格数据。它在这里不起作用的原因是使用了blitting。在调用FuncAnimation:blit=False 时关闭blitting 可能会有所帮助。如果这不能解决问题,则需要在循环中使用 fig.canvas.draw() 手动制作动画。

请注意,最好不要使用“私有”属性。因此我会推荐

my_table.get_celld()[(1, 1)].get_text().set_text(tmp)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-22
    • 1970-01-01
    • 1970-01-01
    • 2020-01-05
    • 1970-01-01
    • 1970-01-01
    • 2021-01-09
    相关资源
    最近更新 更多