Matplotlib - 在边缘上一致地显示或隐藏网格线
Matplotlib - show or hide gridline on edges consistently
我想渲染一个图(使用 subplots()
创建,顶部和右侧没有边缘,如下所示:
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)
这实际上禁用了边框边缘,只是为了显示,在顶部我可以看到一个主要的网格线,而在右侧我没有:
两边或两边都有网格线我会很好,但这太草率了。我也不想更改轴限制。是否可以使显示的网格线在边缘处保持一致?
不确定这是错误还是出于某种奇怪原因的预期行为。
解决方法是关闭最后一个 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)')
我想渲染一个图(使用 subplots()
创建,顶部和右侧没有边缘,如下所示:
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)
这实际上禁用了边框边缘,只是为了显示,在顶部我可以看到一个主要的网格线,而在右侧我没有:
两边或两边都有网格线我会很好,但这太草率了。我也不想更改轴限制。是否可以使显示的网格线在边缘处保持一致?
不确定这是错误还是出于某种奇怪原因的预期行为。
解决方法是关闭最后一个 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)')