어떤 다른 이유없이 그냥 순전히 호기심에서 시작된 프로그램 공부는 또 별로 목적이 없어서 인지 그리 잘 진행되지 않았네요. 사실 제가 Python에 처음 관심을 가진건 더~ 오래전이지만, 실제로는 [바로가기]때부터였는데요. 그때가 2013년 7월이니 저도 참~ 게으른 사람이었나봅니다.^^. 뭐 여하튼 오늘을 살짝 Python에서 그래프그리는 예제를 보일까 하는데요. 간편히 화일로 저장되어 있는 데이터를 읽어서 그래프로 그리는 일을 해보도록 하겠습니다.^^.
먼저 화일은 위와 같이 탭문자로 구분된 숫자들이 저장된 txt 화일입니다.
필요하신분이 있을지 의문이지만 필요하시면 위 화일을 받으시면 됩니다. 이제 이렇게 저장된 화일을 열어서 탭으로 구분된 데이터를 각각의 변수에 저장하고 이를 다시 그래프로 표현하는 것이지요^^
import re import numpy as np import matplotlib.pyplot as plt t = [] y1 = [] y2 = [] y3 = [] y4 = [] data = open('plotData.txt') for eachLine in data: readTmp = data.readline() tmp = [float(tmpLine) for tmpLine in re.split('\t', readTmp)] t.append(tmp[0]) y1.append(tmp[1]) y2.append(tmp[2]) y3.append(tmp[3]) y4.append(tmp[4]) data.close() plt.plot(t, [i*180/np.pi for i in y1], t, [i*180/np.pi for i in y2], t, [i*180/np.pi for i in y3], t, [i*180/np.pi for i in y4]) plt.grid(True) plt.xlabel('time') plt.legend(('sin', 'cos', 'sin+cos', 'sin*cos')) plt.axis([0, 10, -120, 120]) plt.show()
앗~~ 어려워 보이지 않죠?? ㅎㅎ. 일단, 11번행에서 open 명령을 통해 해당 화일을 열게 됩니다. 그리고, 13번 부터 21번이 화일의 내용을 해당 변수에 저장하게 되는데요. data의 각 행별로 for문 안의 코드가 동작을 합니다. 그리고 15번 행이 regular expression(re)을 통해서 각 탭으로 구분된 데이터를 각각의 숫자로 변환합니다. 사실 이 re는 저는 원래는 잘 모르는 기능이었는데요. [바로가기]에서 void라는 분께서 댓글로 알려주셨더랬지요. ㅎㅎ. 그후 꽤 유용하게 잘 쓰고 있답니다. 다시한번 감사의 꾸벅~~~~
그리고, 각 데이터를 그리는 부분이 plot인데요. 거기도 []로 묶어서 i*180/np.pi for i in v]이렇게 되어 있는것은 받은 데이터를 단지 그래프로 볼때만 스케일을 바꾼다던지 하기 위해서 입니다. 그런 거 안하면 그냥 (t, y1)이렇게 해도 되죠...^^. 아 그리고 t.append() 요런건 t 뒤에 다시 데이터를 추가하는 것을 의미합니다. 그리고 나면 그 그래프의 결과는
요렇게 잘 나오네요~~~ 뭐 크게 중요하거나 어려운 내용은 없습니다만~~~ 그냥 간편히 그림 그리는게 필요하신 분들께는 살짝 도움이 되었으면 좋겠네요.. ㅎㅎ^^
'Software > Python' 카테고리의 다른 글
Python 함수 def에서 유용하게 사용할 수 있는 **kwargs : keywarded argument list (12) | 2015.01.26 |
---|---|
Python에서 Open Dynamics Engine을 이용한 Two Link Pendulum 시뮬레이션 (20) | 2014.11.12 |
Python에서 간단하게 진자 운동 시뮬레이션을 애니메이션으로 구현하기 (21) | 2014.10.31 |
Python 간단한 문법과 그래프 및 각 종 라이브러리를 받을 수 있는 곳 (18) | 2013.08.14 |
Python - MS Window에서 실행파일 만들기 py2exe (22) | 2013.07.24 |
Python - wxPython으로 GUI를 만들 준비하기 (14) | 2013.07.23 |
Python을 통한 간편 시리얼 통신법 (44) | 2013.07.16 |