我尝试使用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()