gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 00:14:48 24 4
gpt4 key购买 nike

我正在使用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com