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

Tom*_*Cho 8 python plot matplotlib pandas

考虑一下我有一个包含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])
Run Code Online (Sandbox Code Playgroud)

此代码显示 在此输入图像描述

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

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

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

在此输入图像描述

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

Rom*_*ain 5

像这样

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

for axe in ax[0]:
    axe.plot(df.index, df[0])
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

  • 技巧(如果不明显的话请指出)是 pandas `plot` 返回 matplotlib 轴。 (2认同)