MatPlotLib中plt.draw()的更有效替代方案

时间:2015-08-14 01:50:51

标签: python performance user-interface matplotlib interactive

我尝试使用MatPlotLib创建一个交互式GUI,用户最常注意的是,例如,更改滑块和GUI响应之间的延迟。

目前,我在每个事件结束时使用plt.draw(),这很有效,除了它导致函数256ms运行时259ms的事实。

在研究plt.draw()的替代方案时,我发现了这篇文章:why is plotting with Matplotlib so slow?,其中建议使用fig.canvas.blit(ax1.bbox)作为替代方案,只重新加载图表,而不是整个图。
当我使用它时,事件处理程序在3ms中运行,但GUI在以下事件期间更新,而不是在当前事件结束时更新,就像事件被捕获在缓冲区中一样:User input 1&gt ; pause> User input 2> GUI responds to input 1> pause> User input 3> GUI responds to input 2,使程序无法使用。

那么我有什么替代品?修复这些问题中的任何一个都可以让我运行一个非常快的GUI。如果您需要,我会发布代码。

注1:使用fig.canvas.blit(ax1.bbox)时,滑块,按钮等会立即更改,只有子图的行为如上所述。

注意2:fig.canvas.draw_idle(),在此处的小部件示例[{3}}和fig.canvas.draw()中使用,与plt.draw()

完全相同

0 个答案:

没有答案