Как построить каждый столбец данных относительно каждого другого столбца данных - PullRequest
0 голосов
/ 11 октября 2018

У меня есть файл данных с 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 голосов
/ 12 октября 2018

У вас есть 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])
0 голосов
/ 11 октября 2018

Предполагая, что 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.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...