在所有子图中使用列绘制DataFrame

时间:2016-02-26 15:31:29

标签: python pandas matplotlib plot

考虑到我有一个包含3列的pandas DataFrame。我想将这些列中的两个作为单独的子图绘制,另一个列应该出现在其他子图上。

为了更好地解释,请考虑示例

x = np.linspace(0,10,5)
y1 = 2*x
y2 = 3*x
y3 = 4*x

df = pd.DataFrame(index=x, data=zip(*[y1,y2,y3]))
df.plot(subplots=True, layout=(1,3), ylim=[0,40])

显示此代码 enter image description here

哪个接近我想要的。但不完全是。我希望那个情节只有两个子图。一个是列0和1,另一个是列0和2.将每列与另一列进行比较。我得到的最接近的是

df[[1,2]].plot(subplots=True, layout=(1,2), ylim=[0,40])
plt.plot(df.index, df[0], label=0)

给了我这张图片,其中第0列只出现在第二个子图中,而不是全部出现:

enter image description here

有没有办法做到这一点?最好不要完全在熊猫之外。我知道我可以遍历第1列和第2列,并使用pyplot和第0列一起手动绘制它们,但这样的代码太多了,如果可能的话,我想避免这样做。

1 个答案:

答案 0 :(得分:4)

喜欢这个

ax = df[[1,2]].plot(subplots=True, layout=(1,2), ylim=[0,40])

for axe in ax[0]:
    axe.plot(df.index, df[0])

enter image description here