首页 > 解决方案 > 如何从轴获取网格线的可见性?

问题描述

我有多个图,并且想要一个功能来切换选定图的网格线的可见性。到目前为止,我可以根据定义的输入值(真/假)设置可见性。但我想切换网格线,因为这些图是动态生成/销毁的。

我查看了 matplotlib-api,但没有找到返回网格可见性的函数。ax.xaxis.get_gridlines()返回网格线列表,但不提供有关可见性的信息。

到目前为止我的代码:

def toggle(key, val):
    if key == "grid":
        ax.grid(val)
    elif key == "xgrid":
        ax.grid(val, axis="x")
    elif key == "ygrid":
        ax.grid(val, axis="y")
    redraw()

像这样检索可见性会很好:

visibility = ax.grid.get_visibility()
ax.grid(not visibility)

否则我需要将可见性值存储在列表中以切换它们。

标签: python-3.x

解决方案


简短回答:可见性可以在ax.yaxis._gridOnMajor“主要”网格中找到。我不知道主要/次要之间的区别是什么,但它有效。

切换可以通过以下方式实现:

ax.xaxis.grid(not ax.xaxis._gridOnMajor)

注意:_gridOnMajor 是 (x/y)axis 类的受保护成员;所以在访问时应该小心


推荐阅读