【问题标题】:Matplotlib - show or hide gridline on edges consistentlyMatplotlib - 一致地在边缘上显示或隐藏网格线
【发布时间】:2020-10-11 23:50:52
【问题描述】:

我想渲染一个绘图(使用subplots() 创建,顶部和右侧没有边缘,如下所示:

ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)

这实际上禁用了边框边缘,只是为了显示,在顶部我可以看到一条主要的网格线,而在右侧我看不到:

我可以在两边或两边都有网格线,但这只是草率。我也不想更改轴限制。是否可以使显示的网格线在边缘上保持一致?

【问题讨论】:

    标签: python matplotlib subplot


    【解决方案1】:

    由于某些奇怪的原因,不确定这是错误还是预期行为。
    一种解决方法是关闭最后一个 x 网格线的剪裁:

    ax.xaxis.get_gridlines()[-1].set_clip_on(False)
    

    例子:

    import matplotlib.pyplot as plt
    
    fig, axes = plt.subplots(2)
    
    def plotit(ax, clip, title):
        ax.plot()
        ax.grid(b=True, which='major', color='blue', linestyle=':')
        ax.set_xlim(0,1)
        ax.set_ylim(0,1)
        ax.spines['right'].set_visible(False)
        ax.spines['top'].set_visible(False)
        if(not clip):
            ax.xaxis.get_gridlines()[-1].set_clip_on(clip)
        ax.set_title(title)
    
    plotit(axes[0], True, 'default (with clipping)')
    plotit(axes[1], False, 'set_clip_on(False)')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-19
      • 1970-01-01
      • 2017-09-10
      • 2017-02-11
      • 1970-01-01
      • 2014-10-24
      • 2015-12-27
      • 2011-05-25
      相关资源
      最近更新 更多