2014-07-17 8 views
2

나는 라즈베리 파이에 연결된 센서의 데이터가 거의 50k 라인 인 텍스트 파일을 가지고 있습니다. 파이썬, 필자를 사용하여텍스트 파일에서 파이썬으로 데이터를 그리는 법

2014-07-16 15:57:35.536579, 128, 251, 254, 255, 30.062 
2014-07-16 15:57:37.763030, 132, 252, 250, 255, 30.062 
2014-07-16 15:57:39.993090, 135, 249, 239, 255, 30.125 
2014-07-16 15:57:42.224499, 142, 251, 221, 255, 30.125 
2014-07-16 15:57:44.452908, 152, 252, 199, 255, 30.187 
2014-07-16 15:57:46.683009, 162, 246, 189, 255, 30.187 

을 그래서 기본적으로 (왼쪽에서 오른쪽으로) 날짜와 시간, 센서 1, 센서 2, 센서 3, 센서 4 센서 나는이 플롯 할 5 : 그것은 다음과 같이 보입니다 그래프를 그리기위한 matplotlib에 대해 읽어보십시오. 그러나 텍스트 파일에서이 데이터를 어떻게 그릴 수 있습니까? 나는 x 축에 타임 스탬프를 플롯하고 y 축에는 다른 센서의 데이터를 한 차트에 표시하고 싶습니다. Im matplotlib에서 전혀 경험하지 못했습니다. 나는 이런 식의 생각 텍스트 파일을 읽기 위해

:

line = file.readlines() 
new_line = line.strip(", ") 
date = new_line[0] 
sensor1 = new_line[1] 
#and so on 
+0

gnuplot이 직접 처리 할 수 ​​있습니다. gnuplot 내부에서 :'set timefmt '% Y- % m- % d % H : % M : % S "; xdata 시간 설정, 1 : 2를 사용하여 't.gp'그림 그리기 –

답변

1

당신은 pandas은 "순수 NumPy와"솔루션이 내용 후`

import numpy as np 
import datetime 

# date field conversion function 
dateconv = lambda s: datetime.strptime(s, '%Y-%M-%D %H:%M:%S:.%f') 

col_names = ["Timestamp", "val1", "val2", "val3", "val4", "val5"] 
dtypes = ["object", "uint8", "uint8", "uint8", "uint8", "float"] 
mydata = np.genfromtxt("myfile.csv", delimiter=',', names=col_names, dtype=dtypes, converters={"Time": dateconv}) 

를 사용하는 것입니다을 설치하지 않으려면 mydata의 지금

array([('2014-07-16 15:57:35.536579', 128, 251, 254, 255, 30.062), 
     ('2014-07-16 15:57:37.763030', 132, 252, 250, 255, 30.062), 
     ('2014-07-16 15:57:39.993090', 135, 249, 239, 255, 30.125), 
     ('2014-07-16 15:57:42.224499', 142, 251, 221, 255, 30.125), 
     ('2014-07-16 15:57:44.452908', 152, 252, 199, 255, 30.187), 
     ('2014-07-16 15:57:46.683009', 162, 246, 189, 255, 30.187)], 
     dtype=[('Timestamp', 'O'), ('val1', 'u1'), ('val2', 'u1'), ('val3', 'u1'), ('val4', 'u1'), ('val5', '<f8')]) 

그리고 당신은, 예를 들어, mydata['val5']을 시도 할 수 있습니다 :

을 0
array([ 30.062, 30.062, 30.125, 30.125, 30.187, 30.187]) 

datetime.datetime 개체가 이제 개체로 저장됩니다. 다른 모든 것은 지정한 데이터 유형으로 저장됩니다.

2

내가 (R 비슷한입니다) 팬더를 사용하는 것이 좋습니다. 귀하의 입력 샘플 파일에 'data.csv을'Supppose :

import pandas as pd 
df = pd.read_csv('data.csv', parse_dates=True,index_col=0, 
     names = ['timestamp','x','y','z','w','k']) 
df.plot() 
관련 문제