[Python] matplotlib으로 사인 곡선, 코사인 곡선 그리기 (sine, cosine plot using matplotlib)
Python 분석과 프로그래밍/Python 그래프_시각화 2021. 7. 5. 00:00이번 포스팅에서는 Python 의 matplotlib 라이브러리를 사용해서 사인 곡선, 코사인 곡선을 그려보겠습니다.
(1) matplotlib, numpy 라이브러리를 사용해서 사인 곡선, 코사인 곡선 그리기
(Plotting sine, cosine curve using python matplotlib, numpy)
(2) x축과 y축의 눈금값(xticks, yticks), 범례(legend) 를 설정하기
(3) 그래프에 가로, 세로 그리드 선 추가하기 (adding grid lines)
이번 포스팅은 그리 어렵지는 않은데요, 눈금값, 범례, 그리드 선 추가와 같은 소소한 팁들이 필요할 때 참고하라고 정리해 놓습니다.
(1) matplotlib, numpy 라이브러리를 사용해서 사인 곡선, 코사인 곡선 그리기
(Plotting sine, cosine curve using python matplotlib, numpy)
numpy 로 0부터 4 pi 까지 0.1씩 증가하는 배열의 x축 값을 만들고, 이들 값들을 대입하여서 사인 y값, 코사인 z값을 생성하였습니다.
이들 x 값들에 대한 사인 y값, 코사인 z값을 가장 간단하게 matplotlib 으로 시각화하면 아래와 같습니다.
import numpy as np
import matplotlib.pyplot as plt
# using Jupyter Notebook
%matplotlib inline
## generating x from 0 to 4pi and y using numpy library
x = np.arange(0, 4*np.pi, 0.1) # start, stop, step
y = np.sin(x)
z = np.cos(x)
## ploting sine and cosine curve using matplotlb
plt.plot(x, y, x, z)
plt.show()
(2) x축과 y축의 눈금값(xticks, yticks), 범례(legend) 를 설정하기
위의 (1)번 사인 곡선, 코사인 곡선을 보면 그래프 크기가 작고, x축 눈금값과 y축 눈금값이 정수로 되어있으며, x축과 y축의 라벨도 없고, 범례가 없다보니 사인 곡선과 코사인 곡선을 구분하려면 신경을 좀 써야 합니다.
사인 곡선, 코사인 곡선 그래프를 보기에 좀더 가독성을 높이기 위해서
(a) 그래프 크기를 [12, 6] 의 가로, 세로 크기로 더 키우고,
(b) x축과 y축의 눈금값을 지정해주며 (xticks, yticks)
(c) 그래프 이름, x축과 y축의 라벨 지정해주기 (title, xlabel, ylabel)
(d) 범례 지정해주기 (legend)
를 추가로 해보겠습니다.
## 가로, 세로 그래프 크기 설정해주기
plt.rcParams['figure.figsize'] = [12, 6]
plt.plot(x, y)
plt.plot(x, z)
## xticks, yticks 값 지정해주기
plt.xticks([np.pi, np.pi*2, np.pi*3, np.pi*4],
[r'$\pi$',r'2$\pi$',r'3$\pi$',r'4$\pi$'])
plt.yticks([-1,-0.5, 0, 0.5, 1])
## title, xlabel, ylabel지정해주기
plt.title('Sine and Cosine Plot')
plt.xlabel('x from 0 to 4pi')
plt.ylabel('sin(x) and cos(x)')
## 범례 지정해주기
plt.legend(['sin(x)', 'cos(x)'])
plt.show()
(3) 그래프에 가로, 세로 그리드 선 추가하기 (adding grid lines)
위의 (2)번 사인, 코사인 그래프가 앞서의 (1)번 그래프 보다 훨씬 보기에 좋지요? 그럼, 여기에서 조금만 더 친절하게 가로와 세로의 그리드 점선을 추가해 보겠습니다.
plt.rcParams['figure.figsize'] = [12, 6]
plt.plot(x, y)
plt.plot(x, z)
plt.xticks([np.pi, np.pi*2, np.pi*3, np.pi*4],[r'$\pi$',r'2$\pi$',r'3$\pi$',r'4$\pi$'])
plt.yticks([-1,-0.5, 0, 0.5, 1])
plt.xlabel('x from 0 to 4pi')
plt.ylabel('sin(x) and cos(x)')
plt.title('Sine and Cosine Plot')
plt.legend(['sin(x)', 'cos(x)'])
## grid line 추가하기
plt.grid(b=True,
which='major', # both/major/minor
color='gray',
linestyle='--')
plt.show()
이번 포스팅이 많은 도움이 되었기를 바랍니다.
행복한 데이터 과학자 되세요! :-)