如何动态更新matplotlib表格单元格文本
我的代码读取两个数字文件,并在窗口的上半部分动态绘制这些数字。 我还在图表下方放了一个表格。 我想把绘制出来的最新数值拿来更新表格中的单元格。 表格在第一次调用“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()
1 个回答
11
原则上,代码 my_table._cells[(1, 1)]._text.set_text(tmp)
应该能更新表格单元格的数据。但这里不生效的原因是因为使用了 blitting
技术。你可以试着在调用 FuncAnimation
时把 blit
设为 False
,这样可能会有帮助。如果这样还是不行,那就需要手动在一个循环里用 fig.canvas.draw()
来进行动画更新。
另外,最好不要使用“私有”属性,所以我建议你
my_table.get_celld()[(1, 1)].get_text().set_text(tmp)