Как построить траекторию частицы, используя данные xy из текстового файла в python? - PullRequest
0 голосов
/ 18 апреля 2020

Мне нужно построить траекторию частицы, используя данные xy, которые находятся в текстовом файле, используя python. Я продолжаю получать индекс списка сообщений об ошибках вне диапазона в строке y.append. Я проверил текстовый файл, там, кажется, нет лишних пробелов или чего-то еще. Как бы это исправить, чтобы построить траекторию?

#import numpy as np
import matplotlib.pyplot as plt

X,Y=[],[]
for line in open('20130320_Track_17_5_rpm.txt','r'):
    values=[str(s) for s in line.split()]
    X.append(values[0])
    Y.append(values[1])
plt.plot(X,Y)
plt.show()

Ответы [ 2 ]

0 голосов
/ 19 апреля 2020

0067 0100, 0064 0107, значения x и y разделены запятыми. данные отображаются в виде столбца x и столбца значений y

с этим утверждением - я понимаю, что x = 0067 0100 y = 0064 0107

Я создал тестовый файл test.txt

0067 0100, 0064 0107 0059 0596, 5668 8999 1224 5623, 5556 4566

X, Y = [], [] для открытой строки ('test.txt', 'r'):

values=[ str(s.replace(' ','').strip())  for s in line.split(',')]
X.append(values[0])
Y.append(values[1])

plt.plot (X, Y) plt.show () print (X, Y)

image

0 голосов
/ 18 апреля 2020

Решение

Поскольку ваши данные имеют следующую структуру,

0067 0100, 0064 0107,...

Вот обновленное решение.

Обновлено для ваших данных:

# write dummy data to file
x = np.arange(10)
y = x*2 + 3
data = ','.join([ str(a) + ' ' + str(b) for a, b in zip(x, y) ])
with open('out.txt', 'w') as f:
    f.write(data)

# read data from file
fname = 'out.txt'
with open(fname, 'r') as f:
    stream = f.read().replace(', ', ',').replace(' ', ',').split(',')
X, Y = [], []
for i in range(len(stream)//2):
    X.append(2*i)
    Y.append(2*i+1)
plt.plot(X,Y)
plt.show()

Если вместо этого ваши данные имели несколько строк: два столбца

Попробуйте это. Использование numpy.genfromtxt(). Поскольку вы не упомянули, какой разделитель / разделитель используется, я предположил, что в следующем примере это будет один символ пробела .

import numpy as np
import matplotlib.pyplot as plt

fname = '20130320_Track_17_5_rpm.txt'
data = np.gentfromtxt(fname, delimiter=' ')
X, Y = data[:,0], data[:,1]
plt.plot(X,Y)
plt.show()

Пример с фиктивными данными

# Create and Write Dummy Data to file: 'out.txt'
x = np.arange(10)
y = x*2 + 3
data = '\n'.join([ str(a) + ' ' + str(b) for a, b in zip(x, y) ])
with open('out.txt', 'w') as f:
    f.write(data)

np.genfromtxt('out.txt', delimiter=' ')

Вывод :

array([[ 0.,  3.],
       [ 1.,  5.],
       [ 2.,  7.],
       [ 3.,  9.],
       [ 4., 11.],
       [ 5., 13.],
       [ 6., 15.],
       [ 7., 17.],
       [ 8., 19.],
       [ 9., 21.]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...