在gui中更新matplotlib图的有效方法?

时间:2017-03-18 08:29:18

标签: python matplotlib tkinter

我的应用程序通过网络以大约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可能的加速提示。如果我得到了一些工作,我会更新。

1 个答案:

答案 0 :(得分:1)

您可以更新绘图对象的数据。但在某种程度上,您无法更改绘图的形状,您可以手动重置x和y轴限制。

e.g。

try/except

flush_events

  

刷新图形的GUI事件。仅针对后端实现   使用GUI。

flush_events 确保GUI框架有机会运行其事件循环并清除任何GUI事件。有时这需要在NotImplementedError块中,因为此默认实现方法是提出draw

绘制会渲染图形,在上面的代码中,可能会移除{{1}}仍在工作。但在某种程度上它们是不同的。