如何使用熊猫中的循环和子图为数据框中的所有列绘制部分值

时间:2019-02-22 13:44:21

标签: pandas dataframe

我是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.plotax.plot

感到困惑

请帮助!!!

0 个答案:

没有答案