来自一列中两个DataFrame的子图,共享x轴

时间:2013-08-23 20:51:39

标签: python pandas

我需要在一列中的两个DataFrame中绘制几列(每个绘图两列或更多列),共享x轴。所有数据都具有相同的索引 从[1]获取和修改的示例:

 df = DataFrame(randn(1000, 4), index=date_range('1/1/2000', periods=1000), columns=list('AB'))
 df2 = DataFrame(randn(1000, 4), index=df.index, columns=list('CD'))
 df = df.cumsum()
 df2 = df.cumsum()

 fig, axes = plt.subplots(nrows=2, ncols=1, sharex=True)
 df['A'].plot(ax=axes[0,0])
 df2['C'].plot(ax=axes[0,0])
 df['B'].plot(ax=axes[1,0])
 df2['D'].plot(ax=axes[1,0])

运行这个我得到:IndexError: too many indices这是一个错误还是我错过了什么?

当我更改ncols=2时,一切正常,但还有两个空白图。

我可以使用其他解决方案,但上面看起来更好:

ax1 = subplot(211)
df['A'].plot()
df2['C'].plot()

ax2 = subplot(212, sharex=ax1)
df['B'].plot()
df2['D'].plot()

1 个答案:

答案 0 :(得分:3)

这是因为axes是1D ndarray,因此axes[0, 0]不是有效索引。只有0和1有效。将绘图代码更改为:

df['A'].plot(ax=axes[0])
df2['C'].plot(ax=axes[0])
df['B'].plot(ax=axes[1])
df2['D'].plot(ax=axes[1])

您也可以

fig, (ax1, ax2) = subplots(2, 1, sharex=True)

df['A'].plot(ax=ax1)
df2['C'].plot(ax=ax1)
df['B'].plot(ax=ax2)
df2['D'].plot(ax=ax2)