共享两个pandas系列图的X轴
共享两个pandas系列图的X轴
我有两个pandas系列。我需要将它们在共享的X轴上堆叠在一起绘制。我尝试了下面的代码,但是它并没有将它们堆叠起来,而是将两条线放在同一个图上。为什么会这样?我该如何堆叠它们?\n
n=10 x = pd.Series(data = np.random.randint(0,10, n), index=pd.date_range(pd.to_datetime('today'), freq='D', periods=n)) y = pd.Series(data = np.random.randint(0,10, n), index=pd.date_range(pd.to_datetime('today'), freq='D', periods=n)) ax = x.plot() ax2 = y.plot() ax2.sharex(ax)
\n我知道可以使用subplots来实现堆叠。如果我理解正确,pandas的唯一处理方式是在调用df.plot()
后返回的ax
。我该如何使用这个ax
来实现正确的共享横坐标轴的堆叠?
问题出现的原因是希望将两个pandas系列的绘图共享x轴,但是在绘制过程中,底部轴与上方水平线的连接不符合预期。
解决方法是使用matplotlib的subplots函数创建共享轴,并将两个系列分别绘制在两个子图上。具体步骤如下:
import matplotlib.pyplot as plt fig, (ax1, ax2) = plt.subplots(2, 1, sharex=True) x.plot(ax=ax1) y.plot(ax=ax2) plt.show()
以上代码中,通过subplots函数创建了一个包含两个子图的图形对象fig和两个子图对象ax1和ax2。通过设置sharex参数为True,使得两个子图共享x轴。
此外,还有一个问题是如何将第一个图的底部轴与第二个图的顶部水平线合并。为了解决这个问题,需要调整子图之间的间距。可以通过设置plt.subplots_adjust函数的hspace参数为0来实现:
plt.subplots_adjust(hspace=0)
这样可以使得两个子图之间的垂直间距为0,达到底部轴与上方水平线合并的效果。
希望以上内容能够帮助你解决问题。如有其他问题,请随时提问。