对齐两个图上的网格线

align grid lines on two plots

我在 Python 的 matplotlib 中有 2 个子图。它们堆叠在一起。

我想在每个地块上都有网格线,我已经成功地做到了。但是每个图都有不同的 x 轴,因此,顶部图的垂直网格线与底部图的垂直网格线不对齐。

我希望顶部绘图的网格线在 x 轴上的位置与它们在底部绘图上的位置相同,即两个绘图中的垂直网格线应对齐。

我想象我可以准确地告诉我的网格线在哪里,所以我可以通过调整线条直到它们尽可能匹配来实现我的目标。

我只是希望可能有一些更简单的方法可以让我对齐两个图上的网格线。


编辑:

我认为 shared axis 不是我想要的。

我的顶部和底部图的比例非常不同,所以当我共享轴时,它也会改变比例。例如,假设我的顶部图的数据在 x 轴上从 0-100 运行,而在底部图上,数据从 0-50 运行。当我共享轴时,顶部图仅显示 0-50 的数据,我不希望它显示。

我希望它像以前一样从 0-100 显示,但只是希望它与其他绘图共享轴和网格线。

您可以使用 LinearLocator:

from matplotlib.ticker import LinearLocator

然后在您的每个 x 轴上或仅在其中一个上调用:

N = 6 # Set number of gridlines you want to have in each graph

ax1.xaxis.set_major_locator(LinearLocator(N))
ax2.xaxis.set_major_locator(LinearLocator(N))

或者从源轴获取刻度数并将其设置在目标轴上:

N = source_ax.xaxis.get_major_ticks()
target_ax.xaxis.set_major_locator(LinearLocator(N))