티스토리 뷰
Project : Py_EX
Python file : EX02_sineplot.py
IDE : PyCharm [설치방법]
이전 글 참조
사인함수를 사용해 보았으니 이번에는 그래프를 그려보자. 위키피디아 Sine에 그려져 있는 그래프를 파이썬으로 그리자.
# 사인함수 그래프 분석
위키피디아에서 가져온 사인 그래프는 x축이 radian으로 되어있고 y축이 sin(x)인 그래프 이다. 즉 아래와 같은 함수로 표현이 가능하다.
주기는 1주기[x축 : 0~2π] 크기는 1[y축 : -1~1]인 사인함수이다.
# 준비하기
그래프를 그리려면 x 데이터와 함수가 필요하겠다. 이번 예제에서 x 데이터는 0에서 2π까지 n개로 쪼개서 x라는 변수에 넣어주면 되겠다. 어떻게?
numpy 라는 모듈을 사용하자, matlab에 익숙한 공학도들이라면 numpy 라는 모듈은 절대 낯설지 않을 것이다. 이 모듈은 math 모듈과는 달리 빌트인 모듈이 아니라서 특별한 방법으로 설치해 주어야 한다. 일반적으로 pip 라는 설치 모듈을 사용하지만 몇몇 개발환경에서는 쉬운 모듈 설치 방법을 제공한다. 내가 쓰고있는 파이참도 그 중 하나이다.
일단, 그 전에 지난번에 만든 프로젝트(Py_EX)에 새로운 파이썬 파일을 생성하자. 이름은 두번째 예제니깐 "EX02_sinplot.py" 정도면 적당히 알아볼 수 있겠다.
이 프로젝트에서 아직 모듈을 가져온 적이 없기 때문에 이번 예제에서 필요한 등간격 x 데이터를 만들어 줄 numpy 모듈과 그래프를 그릴 때 사용할 matplotlib 모듈을 설치해주자. 파이참은 아래와 같이 쉽게 모듈을 설치할 수 있다.
패키지 설치를 클릭하고 한참(느낌상)을 기다리면 설치가 완료되었다는 알림을 준다. matplotlib 모듈도 동일한 방법으로 설치해주자. 두 가지의 모듈을 설치했는데 이것 저것 같이 설치 되어있다. 필요해서 설치 한 것이겠지 하고 넘어가자.
# x 데이터 생성하기
이제 모듈도 준비가 되었으니 x 데이터를 만들어보자. 0부터 2π까지 n개(여기서는 한,,, 1000개로 하자)로 쪼개서 변수 x에 저장하려고 하는데, numpy 모듈의 linspace 함수를 사용할 것이다.
import numpy as np
start = 0
end = 2 * np.pi
dx = 1000
x = np.linspace(start, end, dx)
- 함수 앞에 계속해서 쓰기에 numpy 는 너무(?) 길기 때문에 np라는 짧은 이름으로 사용하기 위해 as np 로 가져왔다. 보통 numpy 모듈은 np 로 많이 가져와서 사용하더라.
- numpy 에도 pi 상수가 내장되어 있어서 따로 math 모듈을 가져오지 않고 numpy 모듈을 사용하였다.
만들려고 했던 x 데이터를 생성하였다. 실행해도 아무것도 나오지 않겠지만 print 함수로 출력해보면 분명 x라는 변수에 0부터 2π 까지 1000개의 데이터가 들어가 있을 것이다. * 데이터 갯수를 확인하려면 print(len(x))로 데이터 수를 출력해 볼 수 있다.
# 그래프 그리기
위에서 설치한 matplotlib 모듈에서 그래프를 그리기 위한 함수 pyplot 만 가져오자. 이번에도 모듈명을 줄여서 "plt"로!
import numpy as np
from matplotlib import pyplot as plt
start = 0
end = 2 * np.pi
dx = 1000
x = np.linspace(start, end, dx)
plt.plot(x, np.sin(x))
그리고 사용방법은 plot(x,y) !! matlab이랑 너무 똑같아서 놀랐지만. pyplot 태생자체가 matplotlib 모듈이 matlab처럼 작동하게 하는 함수의 모음이라고 한다. 만드신 분 감사합니다. 더 궁금하면 아래 링크를 읽어보자. 참고로 영어다.
아, 삼천포로 빠지지 말고! 위 코드를 실행하면 그래프 창이 뜬다.
이 글 제일 처음에 위키피디아에서 가져온 그래프와 비슷한 그래프가 떴다. 분명 그 그래프와 동일한 데이터의 그래프 일 것인데(물론 데이터 갯수는 다를 수 있지만) 눈금(grid)도 없고, x축 표시 방식도 다르고, 등등. 완벽히 마음에 들지는 않다.
오늘은, 여기까지! 너무 글이 길어지면 읽는 사람도 피곤할테니. 다음에는 이 그래프를 매만져서 위키피디아 그래프와 비슷하게 만들어보는 재미있는 작업을 해보자.
다음 글
'Engineering > Python' 카테고리의 다른 글
[Python] 행렬 만들고 연산까지 해보기1 (1) | 2020.09.14 |
---|---|
[Python] pyplot 그래프 편집하기 (0) | 2020.09.06 |
[Python] 사인함수(삼각함수) 사용해보기 (0) | 2020.09.05 |
[Python] math.pi 대신 pi로 원주율(π) 사용하기 (0) | 2020.07.12 |
[Python] 원주율 pi(π), 모듈에서 가져다 쓰기 (0) | 2020.07.05 |
- Total
- Today
- Yesterday
- Console 삭제
- qt designer
- 갤럭시 워치
- 액티브2
- sin
- 모듈
- 그래프
- PyCharm
- numpy
- 기존 콘솔
- pyplot
- 파이썬
- 콘솔창 삭제
- 한글
- 콘솔
- pyQT5
- 단위행렬
- 행렬의 곱
- 맛집
- 배곧
- 갤럭시 워치 액티브2
- linalg
- 터미널 실행
- Python 콘솔에서 실행
- 행렬
- 파이참
- Python
- 언어팩
- Sine
- PI
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |