我的应用程序通过网络以大约30fps的速度接收数据,并且需要根据这些新数据动态更新水平条形图。
为了这个目的,我在tkinter窗口中使用matplotlib图。对我的代码进行分析表明,我的代码中的一个主要瓶颈是更新此数字。
下面给出了简化版本的代码:
def update_bars(self):
"""
Updates a horizontal bar chart
"""
for bar, new_d in zip(self.bars, self.latest_data):
bar.set_width(new_d)
self.figure.draw()
我所经历的滞后是重要的,随着时间的推移会迅速增长。有没有更有效的方法来更新matplotlib数字?任何帮助都会很棒。
编辑:我将关注this可能的加速提示。如果我得到了一些工作,我会更新。
答案 0 :(得分:1)
您可以更新绘图对象的数据。但在某种程度上,您无法更改绘图的形状,您可以手动重置x和y轴限制。
e.g。
try/except
刷新图形的GUI事件。仅针对后端实现 使用GUI。
flush_events 确保GUI框架有机会运行其事件循环并清除任何GUI事件。有时这需要在NotImplementedError
块中,因为此默认实现方法是提出draw
。
绘制会渲染图形,在上面的代码中,可能会移除{{1}}仍在工作。但在某种程度上它们是不同的。