我是python和panda的新手,我试图使用panda中的数据框来绘制数据(这是一个高斯分布图)。我的数据框中有7列(第一个是X轴,其余是Y轴)。我成功地为每个帧手动绘制了所有Y列与X轴的关系图,但我无法在循环中完成此操作高效的编程。
这是我到目前为止所得到的...
df.head()
向我提供了以下数据:
pixel f1 f2 f3 f4 f5 f6
0 1 372 373 373 368 374 372
1 2 372 373 370 371 371 371
2 3 371 375 369 373 373 370
3 4 372 370 370 369 367 367
4 5 367 369 368 370 370 368
然后,
我编写了以下代码,使用df.plot
在子图中绘制数据(仅从索引450到550),
fig, axes = plt.subplots(nrows=2, ncols=3,figsize=(20,10))
df[450:550].plot(x='pixel', y='f1',ax=axes[0,0],grid=True)
df[450:550].plot(x='pixel', y='f2',ax=axes[0,1],grid=True)
df[450:550].plot(x='pixel', y='f3',ax=axes[0,2],grid=True)
df[450:550].plot(x='pixel', y='f4',ax=axes[1,0],grid=True)
df[450:550].plot(x='pixel', y='f5',ax=axes[1,1],grid=True)
df[450:550].plot(x='pixel', y='f6',ax=axes[1,2],grid=True)
我尝试如下循环进行此过程,
x = df[450:550].pixel
y1 = df[450:550].f1
y2 = df[450:550].f2
y3 = df[450:550].f3
y4 = df[450:550].f4
y5 = df[450:550].f5
y6 = df[450:550].f6
frames=[y1,y2,y3,y4,y5,y6]
fig, axes = plt.subplots(nrows=2, ncols=3,figsize=(20,10))
for c,num in zip(frames, xrange(1,8)):
plt.subplot(2, 3, num)
df[450:550].plot(x='pixel',y=c,ax=axes[num], grid=True)
fig.tight_layout()
plt.show()
然后我使用for loop
尝试了zip, enumerate
,但是它不起作用。
我想我对df.plot
和ax.plot
请帮助!!!