如何对每列数据绘制数据

时间:2018-10-11 17:49:03

标签: python numpy for-loop matplotlib file-io

我有一个n列和x行数的数据文件。 如何将每一列与其他每列数据相对应?

data=[]
inFile = open('random.data','r')
    for line in inFile.readlines():
        line = line.split()
        b = np.array([line],dtype=float)
        for i in range(len(b)):
            c=(b[i])
            data.append(c)
inFile.close()

这将产生一个数组,我可以在其中索引每个列,如下所示:

datax = ([i[0] for i in data])
datay = ([i[1] for i in data])
dataz = ([i[2] for i in data])
dataa = ([i[3] for i in data])

然后彼此作图:

plt.plot(datax,datay,dataz,dataa,'o')

我该如何使用for循环来实现n个列的工作?

2 个答案:

答案 0 :(得分:0)

假设上面代码中的data是pandas df,下面的代码将起作用:

import matplotlib.pyplot as plt
df_data = data
for i in range(len(df_data.columns)):
    for j in range(len(df_data.columns)):
        x = df_data.iloc[:,df_data.index[i]]
        y=  df_data.iloc[:,df_data.index[j]]
        plt.figure()
        plt.plot(x[i],y[j])

要向df读取数据,以下是代码:

data = pd.read_csv('random.data', sep=" ", header=None) #sep depends on your file, it can be space, semicolon or anything.
data.columns = ["a", "b","c", ... "etc.", ...] # Put names of your column in place of a,b,c etc.

答案 1 :(得分:0)

您有n列,我想您可以通过data[]访问每一列。

尝试一下

# define n here

numberofplots = math.factorial(n)/(math.factorial(2)*math.factorial(n-2))

fig = plt.figure()
for i in range(n-1):
    for j in range(i+1,n):
        ax = fig.add_subplot(numberofplots,1, ((i+1)*j)
        ax.plot(data[i], data[j])