在Python中迭代列中的单独绘图

时间:2017-10-09 03:17:11

标签: python loops matplotlib

我对编码非常陌生,所以我感谢任何帮助。 我有一个大型数据文件,我想创建多个图,其中第一列是所有它们的x轴。理想情况下,代码将遍历所有列,每个列分别是新的y轴。我为各个图包含了我的代码,但是想要为所有列创建一个循环来完成它。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

X = df[:,0]
col_1= df[:,1]
plt.plot(X,col_1)
plt.show()

col_2= df[:,2]
plt.plot(X,col_2)
plt.show()

2 个答案:

答案 0 :(得分:2)

Pandas将为您迭代所有列。只需将x列放在索引中,然后调用绘制数据帧。 Pandas使用索引作为x轴没有必要直接使用matplotlib。这是一些带有情节的虚假数据:

df = pd.DataFrame(np.random.rand(10,5), columns=['x', 'y1', 'y2', 'y3', 'y4'])
df = df.sort_values('x')

          x        y1        y2        y3        y4
9  0.262202  0.417279  0.075722  0.547804  0.599150
5  0.314894  0.611873  0.880390  0.282140  0.513770
8  0.406541  0.933734  0.879495  0.500626  0.527526
2  0.407636  0.550611  0.646449  0.635693  0.807088
1  0.437580  0.194937  0.501611  0.949575  0.409130
4  0.497347  0.443345  0.658259  0.457635  0.851847
3  0.500726  0.569175  0.304910  0.151071  0.678991
6  0.547433  0.512125  0.539995  0.701858  0.358552
0  0.783461  0.649381  0.320577  0.107062  0.840443
7  0.793702  0.951807  0.938635  0.526010  0.098321

df.set_index('x').plot(subplots=True)

enter image description here

答案 1 :(得分:1)

你可以遍历每个列,在它自己的子图上绘制它,如下所示:

import matplotlib.pyplot as plt

fig, ax = plt.subplots(df.shape[1]-1, sharex=True)
for i in range(df.shape[1]-1):
    ax[i].plot(df[:,0], df[:,i+1])

plt.show()

修改

我刚刚意识到你的例子一次显示1个情节。你可以这样做:

import matplotlib.pyplot as plt

for i in range(df.shape[1]-1):
    plt.plot(df[:,0], df[:,i+1])
    plt.show()
    plt.close()