我在一个数据帧中有以下数据。我编写了一个for循环,因此将针对BOND,ANGEL和DIHED绘制每一列。
我运行这段代码
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轴,则会引起问题。
答案 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'的其他列