본문 바로가기

Deep Learning

[Deep Learning] 220730 학습일기

 

밑바닥부터 시작하는 딥러닝 - YES24

직접 구현하고 움직여보며 익히는 가장 쉬운 딥러닝 입문서 이 책은 라이브러리나 프레임워크에 의존하지 않고, 딥러닝의 핵심을 ‘밑바닥부터’ 직접 만들어보며 즐겁게 배울 수 있는 본격 딥

www.yes24.com

 

1.

matplotlib는 그래프를 그려주는 라이브러리.

matplotlib를 사용하면 그래프 그리기와 데이터 시각화가 쉬워진다.

 

matplotlib의 pyplot 모듈을 이용해 sin 함수를 그려보자.

import numpy as np
import matplotlib.pyplot as plt

#데이터 준비
x = np.arange(0,6,0.1) #0부터 6까지 0.1 간격으로 생성
y = np.sin(x)

#그래프 그리기
plt.plot(x,y)
plt.show()

 

과정은 다음과 같다.

numpy의 arange(주의하자. arrange 아니다. r 한 개다.) 메소드를 통해 [0 0.1 0.2  ... 5.8 5.9] 라는 데이터를 생성하여 변수 x에 할당한다.

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0,6,0.1) #0부터 6까지 0.1 간격으로 생성
print(x)

#결괏값
[0.  0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.  1.1 1.2 1.3 1.4 1.5 1.6 1.7
 1.8 1.9 2.  2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.  3.1 3.2 3.3 3.4 3.5
 3.6 3.7 3.8 3.9 4.  4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5.  5.1 5.2 5.3
 5.4 5.5 5.6 5.7 5.8 5.9]

그리고 x의 각 원소에 numpy의 sin 함수인 np.sin()을 적용하여 변수 y에 할당한다.

x와 y를 인수로 plt.plot 메소드를 호출해 그래프를 그린다.

plot의 뜻이 '구성'이니 x,y를 인수로 그래프를 구성한다고 생각하면 쉽겠다.

 

마지막으로 plt.show()를 호룰해 그래프를 화면에 출력한다.

그러면 아래와 같이 나타난다.

새로운 창이 하나 나타난다.

GUI 가 만들어졌다고 해야 하나?

 

sin 함수의 주기가 2π(약 6.28)이니 그래프는 맞게 그려졌다고 볼 수 있다.

 

 

근데 이렇게 줌 해서 들어가봐도 그래프가 끊김이 없다.

분명 0.1 간격으로 x가 주어졌는데?

내 추측으로는 plot으로 그래프를 구성할 때 그 사이 빈틈을 메꿔준 것 같다.

 

 

2.

1번에서 그린 sin 그래프에 cos 함수도 추가로 그려보자.

그리고 제목과 각 축의 이름(label) 표시도 해보자.(이것들이 다 pyplot의 기능이다.)

 

import numpy as np
import matplotlib.pyplot as plt

#데이터 준비
x= np.arange(0,6,0.1) #0부터 6까지 0.1 간격으로 생성
y1 = np.sin(x)
y2 = np.cos(x)

#그래프 그리기
plt.plot(x,y1,label="sin")
plt.plot(x,y2, linestyle= "--", label= "cos") # cos 함수는 점선으로 그리기
plt.xlabel("x") #x축 이름
plt.ylabel("y") #y축 이름
plt.title("sin & cos") #제목
plt.legend()
plt.show()

결과는

이렇게 나온다.

 

 

여기서 

빨간색 밑줄 친 명령어는

 

위의 빨간색 밑줄 친 부분, 즉 각 데이터의 이름을 표시한다.

 

그리고 pyplot.legend가 뭔가 하니

Legend를 한국어로는 범례 라고 하는데 legend는 그래프에 데이터의 종류를 표시하기 위한 텍스트이다.

바로 이 박스가 Legend(범례)이다.

 

 

주의하자!  linestyle은 VSC에서 자동완성이 안 된다.

이렇게만 뜨는데 _LineStyle 선택하지 말고 그냥 줏대있게 linestyle 쓰자.

뭔가 이상한 거 같지만 다 쓰고 나면 원하는대로 점선이 나온다.

 

 

3.

pyplot에는 이미지를 표시해주는 imshow() 메소드도 존재한다.

 

이미지를 읽어들일 때는 matplotlib.image 모듈의 imread() 메서드를 사용한다.

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.image import imread
img = imread('C:/Users/tina0/Desktop/prac.png')

plt.imshow(img)
plt.show()

이미지를 먼저 읽어들이고 (imread) 이미지를 표시한다(imshow, show)

그러면 아래와 같이 나온다.

 

 

 

 

[참고]

-legend

https://codetorial.net/matplotlib/set_legend.html

 

Matplotlib 범례 표시하기 - Codetorial

예제2 import matplotlib.pyplot as plt plt.plot([1, 2, 3, 4], [2, 3, 5, 10], label='Price ($)') plt.xlabel('X-Axis') plt.ylabel('Y-Axis') plt.legend(loc='lower right') plt.show() loc 파라미터는 예제에서와 같이 문자열로 지정할 수도 있

codetorial.net

 

'Deep Learning' 카테고리의 다른 글

[Deep Learning] 220805 학습일기  (0) 2022.08.05
[Deep Learning] 220803 학습일기  (0) 2022.08.03
[Deep Learning] 220729 학습일기  (0) 2022.07.30
[Deep Learning] 220727 학습일기  (0) 2022.07.29
[Deep Learning] 220721 학습일기  (0) 2022.07.23