使用for循环绘制DataFrame

时间:2018-11-16 16:54:03

标签: python matplotlib

我在一个数据帧中有以下数据。我编写了一个for循环,因此将针对BOND,ANGEL和DIHED绘制每一列。

My DataFrame

我运行这段代码

col=["TS","BOND","ANGEL","DIHED"]
df1=DataFrame(Energy, column=col)
df1=df1.astype(float)

for i in col:
    print(x)
    df1.plot(x="i", y="TS",)
    plt.show()

但是我得到KeyError:'i'。

我如何在DataFrame上运行循环,以便最后在Y轴上每个TS可以绘制4个图,在X轴上分别可以绘制3列?

bdw我只能绘制TS,但是如果我添加x轴,则会引起问题。

2 个答案:

答案 0 :(得分:1)

我尝试了一个现在可以完美运行的代码。

for i in col[1:]:
    print(i)
    plt.figure()
    plt.plot(df1["TS"],df1[i])
    plt.show()

使用此代码,可以遍历DataFrame并为每列返回一个单独的图。在这种情况下,df1 [“ TS”]将是x轴,并且是固定的,而df1 [i]是y轴,它将是可变的。

答案 1 :(得分:0)

经过研究,看来这是一个未解决的错误。您cannot plot a column against itself

如果我按照以下步骤制作DF:

df=pd.DataFrame({"TS":[1,2,3,4,5,6,7,8,9],
                 "BOND":[54,34,54,56,34,12,34,56,78],
                 "ANGEL":[34,56,47,14,58,70,36,14,36],
                 "DIHED":[13,46,57,37,15,48,59,26,15]})
df
    TS BOND ANGEL DIHED
0   1   54  34  13
1   2   34  56  46
2   3   54  47  57
3   4   56  14  37
4   5   34  58  15
5   6   12  70  48
6   7   34  36  59
7   8   56  14  26
8   9   78  36  15

然后将其放入循环中

for col in df.columns[1:]:
    df.plot(x=col, y='TS')

我得到3个图,一个相对于'TS'的其他列