matplotlib은 파이썬에서 데이터를 시각화(visualization)하는데 널리 사용되는 라이브러리 또는 패키지입니다. matplotlib 패키지 내에는 여러 모듈들이 있습니다. 그 중에서 pyplot 모듈은 matlab과 비슷한 방식으로 plot을 그릴 수 있게 도와주는 모듈입니다. 오늘은 matplotlib.pyplot을 이용해서 plot을 그리는 법에 대해 다루도록 하겠습니다.
두 개 함수 그래프 동시에 그리기
간단히 y = sin(x)와 y = cos(x)의 그래프를 동시에 그려볼까요? matlab에 익숙하신 분들은 아래 코드가 익숙하실 것입니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
|
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0, 10, 0.01);
y1 = np.sin(x)
y2 = np.cos(x)
plt.plot(x, y1, c='r')
plt.plot(x, y2, c='b')
plt.title('y = sin(x) and y = cos(x)')
plt.xlabel('x')
plt.ylabel('y')
plt.legend(['y = sin(x)', 'y = cos(x)'])
plt.grid(True)
|
cs |
위 코드를 실행하면 다음과 같은 그래프가 그려집니다.
matlab을 사용해보신 적이 없으신 분들도 위 코드와 그래프를 동시에 살펴보시면 각 행의 의미를 쉽게 발견하실 것입니다.
두 개 함수의 그래프 subplot을 이용해서 하나씩 그리기
이번에는 두 개 함수의 그래프를 subplot을 이용해서 하나씩 그려보겠습니다. 코드는 다음과 같이 바꿔주면 됩니다. 역시 matlab을 이용할 때와 거의 동일합니다. matlab에 익숙하신 분들은 직관적으로 올바른 코드를 찾아가실 수 있습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0, 10, 0.01);
y1 = np.sin(x)
y2 = np.cos(x)
plt.subplot(1, 2, 1)
plt.plot(x, y1, c='r')
plt.title('y = sin(x)')
plt.xlabel('x')
plt.ylabel('y')
plt.grid(True)
plt.subplot(1, 2, 2)
plt.plot(x, y2, c='b')
plt.title('y = cos(x)')
plt.xlabel('x')
plt.ylabel('y')
plt.grid(True)
|
cs |
위 코드를 실행하면 다음과 같은 그림이 그려집니다.
잘 그려지긴 했지만, 문제가 있습니다. 두 그래프가 너무 붙어있습니다. 심지어 겹쳤죠. subplot들의 간격을 조정해줄 필요가 있습니다. 위 코드에 plt.tight_layout() 한 줄의 코드만 더해주면 됩니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0, 10, 0.01);
y1 = np.sin(x)
y2 = np.cos(x)
plt.subplot(1, 2, 1)
plt.plot(x, y1, c='r')
plt.title('y = sin(x)')
plt.xlabel('x')
plt.ylabel('y')
plt.grid(True)
plt.subplot(1, 2, 2)
plt.plot(x, y2, c='b')
plt.title('y = cos(x)')
plt.xlabel('x')
plt.ylabel('y')
plt.grid(True)
plt.tight_layout()
|
cs |
간격이 잘 조정되었는지 위 코드를 실행시켜서 확인해보겠습니다.
적절하게 간격이 잘 조정된 것을 확인할 수 있습니다.
'Dev > python' 카테고리의 다른 글
[python] 중앙값(median) 계산하기, numpy.median() (0) | 2020.07.15 |
---|---|
[python] SVM 분류 문제를 통해 배우는 머신러닝 훈련 및 테스트 (15) | 2020.07.14 |
[python] 넘파이 배열 내림차순으로 정렬하기 (0) | 2020.07.13 |
[python+matplotlib] matplotlib.pyplot으로 만든 plot 그림 파일로 저장하기, savefig() (0) | 2020.07.11 |
[python] 0이상 1미만의 난수 생성하기, np.random.rand() (0) | 2020.07.10 |
[python] 지수, 로그, 팩토리얼 계산, math 라이브러리 활용 (2) | 2020.07.02 |
[colab+python] 구글 코랩에서 .py 파일 가져오려면? (0) | 2020.06.27 |
[python] numpy 배열을 파일로 저장하고 불러오기 (0) | 2020.06.27 |