2013-08-23 62 views
2

我需要從一列中的兩個數據框中繪製幾列(每個繪圖兩列或更多列),共享x軸。所有數據具有相同的索引。
實例截斷並從[1]修改:來自一列中兩個數據框的子圖,共享x軸

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這是bug還是我失去了一些東西?

當我更改ncols=2時,一切正常,但有兩個額外的空白圖。

我可以使用其他的解決方案,但上面看起來更好:

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

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

回答

3

這是因爲axes是一維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) 
+0

我不想評論我的問題。這是如此明顯...再次感謝@PhilipCloud,併爲您的麻煩感到遺憾。 – Michal

相關問題