从嵌入wxpython的画布中删除matplotlib艺术家的最快方法

时间:2014-01-21 15:39:17

标签: python matplotlib wxpython

我有一个python程序,其中有几个matplotlib画布嵌入到wxpython应用程序中。其中一幅画有许多十字架。当用户右键单击此画布时,应该删除最近的十字架以及属于此十字架的所有内容(它们通过唯一的id-tag链接,并且每个画布中可能存在应删除的内容)。我希望删除(或实际上重新绘制)尽可能快。该程序非常大,所以我使用了几个线程等。

实现这一点最简单的方法是为每个画布使用wx.CallAfter(canvas.draw)。但是,右键单击和每个画布的刷新之间存在延迟,因此我认为canvas.draw()太慢了。

我看到了另外两个用于快速重绘的函数:matplotlib函数blit()draw_artist()。据我所知,blit()刷新某些区域内的更改像素(我使用了轴bbox)。我设法让它与blit()一起使用,因为程序在没有崩溃的情况下运行......但没有更新你在屏幕上看到的内容。

删除像素时未设法让draw_artist()工作(尝试使用第一个line.remove(),然后使用draw_artist(line),但该行已经死亡,因此draw_artist无效。)< / p>

注意:我使用blit()拨打了draw_artist()wx.CallAfter()

我的感觉是blit()是最好的解决方案,但我没有设法让它更新到“屏幕级别”。所以我的问题是:从matplotlib.canvases(嵌入到wxPython)中删除艺术家的最快和最节省资源的方法是什么,而不需要重绘超过你需要,但仍然让更改传播到屏幕?

0 个答案:

没有答案