matplotlib - 覆盖 matplotlib 的平移工具 (wx)

标签 matplotlib wxpython toolbar

我正在使用 wxPython 面板中的 matplotlib 进行一些繁重的绘图。我的问题是在使用 native 平移工具时出现的——当您四处拖动平移 handle 时,matplotlib 似乎试图不断重绘 Canvas 。随着我正在绘制的数据量的增加,这变得非常不稳定(已经使用 Collections 优化了数据等)

就性能而言,我认为 Canvas 在平移结束时释放鼠标时只绘制一次会更可取。我意识到这将意味着我必须用我自己的扩展 WxAgg NavigationToolbar2 类,但我想知道是否有人尝试过类似的东西并且可以建议我覆盖哪些函数?

非常感谢

最佳答案

我花了很多时间对 matplotlib 后端进行修改,我从来没有做过这个特定的更改,但我可以向您展示一行代码以注释掉这将停止动态更新:

我假设您正在使用 WxAgg 后端,如果是这种情况,请打开此文件:C:\Python27\Lib\site-packages\matplotlib\backends\backend_wx.py

并注释掉此处指示的行:

def dynamic_update(self):
    d = self._idle
    self._idle = False
    if d:
        #self.canvas.draw() #<--- Comment out to stop the redrawing during the Pan/Zoom
        self._idle = True

我对此进行了测试,它似乎很好地解决了您的问题。我做了一些快速挖掘,没有看到任何其他函数调用此过程,因此您甚至可以将其更改为:

def dynamic_update(self):
    pass

...这与您在 NavigationToolbar2 基类中找到的代码相同

(当然,如果您对这个更改感到满意,您可以做更多的工作来使用这种修改来制作您自己的自定义后端。只是为了确保您在升级 matplotlib 时不会丢失更改)

关于matplotlib - 覆盖 matplotlib 的平移工具 (wx),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13716165/

相关文章:

python - 从 ipython notebook 保存绘图会生成剪切图像

python - 通过 3D x、y、z 散点图数据拟合一条线

python - 加载资源? - wxPython/Python

java - 如何添加工具栏?

ios - 将 UIButton 添加到工具栏 swift 5

python - Pylabplotfile() 跳过没有标题的文件的第一行 - 如何阻止这个?

python - seaborn 置信区间计算正确吗?

python - GenButton对齐wxpython

python - 如何在 wxpython 网格中以最快的方式设置最佳列宽?

android - 为什么 Searchview 搜索图标没有显示 collapseActionView 属性?