我需要在一列中的两个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()
答案 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)