【问题标题】:How to disable 'zoom to rectangle' programatically in matplotlib如何在 matplotlib 中以编程方式禁用“缩放到矩形”
【发布时间】:2020-06-27 08:33:43
【问题描述】:

我正在尝试修改 matplotlib 的平移功能,以便在按下 ctrl+left 按钮时可以平移图中的轴。

效果很好。

问题是,如果按下缩放按钮,那么尝试上述操作也会“缩放到矩形”,结果会很奇怪。

我想在按下“控制”按钮时自动禁用“缩放到矩形”按钮。

有什么方法可以实现吗?

谢谢! 暗里

【问题讨论】:

    标签: python matplotlib


    【解决方案1】:

    如果窗口来自matplotlib.pyplot(而不是您自己的嵌入),它将有一个与之关联的工具栏,您可以通过该工具栏访问

    import matplotlib.pyplot as plt
    fig, ax = plt.subplots()
    tool_bar = fig.canvas.manager.toolbar
    

    然后您可以将mode 属性设置为''(空字符串)

    但我建议您在执行此操作时要小心,因为如果您在平移或缩放期间更改模式,事情可能不会顺利进行。

    另一个问题是ctrl 不显示为普通键,而是显示为另一个鼠标或键盘事件的修饰符(因此我们无法注册按键事件来关闭缩放)。

    我建议你这样做

    if tool_bar.mode != '':
        print("axes panning does not work with zoom enabled!")
        return
    

    在您的回调中。它让用户关闭缩放功能,但无需进入工具栏的(私有)内部即可工作。

    相关实现在https://github.com/matplotlib/matplotlib/blob/e73d4e056588abc201335d8a491fd9cb37d4c296/lib/matplotlib/backend_bases.py#L2781-L3275

    【讨论】:

      猜你喜欢
      • 2019-10-28
      • 1970-01-01
      • 1970-01-01
      • 2018-07-12
      • 1970-01-01
      • 2010-09-15
      • 2015-05-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多