Python Matplotlib-一致显示或隐藏边上的网格线

Python Matplotlib-一致显示或隐藏边上的网格线,python,matplotlib,subplot,Python,Matplotlib,Subplot,我想渲染一个绘图(使用子绘图()创建),顶部和右侧没有边,如下所示: ax.spines['right'].set_可见(False) ax.spines['top'].set_可见(假) 这实际上禁用了边界边,只是为了显示,在顶部我可以看到一条主网格线,而在右侧我看不到: 我可以在两边或两边都设置网格线,但这太草率了。我也不想更改轴的限制。是否可以使显示的网格线在边缘上保持一致?不确定这是错误还是出于某种奇怪的原因导致的预期行为。 解决方法是关闭最后一条x轴网线的剪裁: ax.xaxis.

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

ax.spines['right'].set_可见(False)
ax.spines['top'].set_可见(假)
这实际上禁用了边界边,只是为了显示,在顶部我可以看到一条主网格线,而在右侧我看不到:


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

不确定这是错误还是出于某种奇怪的原因导致的预期行为。
解决方法是关闭最后一条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)')