AI 머신러닝 딥러닝/AI 수학 입문 공부일지

AI 인공지능 수학 공부일지 5. matplotlib 기초

Tomitom 2022. 10. 21. 17:44
반응형

 

이전에 Numpy 배열의 기본을 배워보았다면 이제 그래프 그리기를 해볼 거예요. 

 

인공지능에서는 데이터를 가시화 하는 것이 중요하기 때문에 matplotlob 모듈을 사용합니다.

matplotlib 모듈은 그래프를 그리거나 이미지 표시, 간단한 에니메이션 동작 같은 것을 수행합니다. 

그래프를 그릴 때에는 matplotlib 의 pyplot 이라는 모듈을 import 해야합니다. 

 

import matplotlib.pyplot as plt -> 주로 as 를 사용해 plt 으로 명명해요. 
import numpy as np -> 앞서 배웠던 Numpy 모듈입니다. 

 

matplotlib 로 그래프를 그릴 때에는 Numpy 의 linspace() 함수가 자주 사용됩니다. 

linspace() : 일정한 간격을 가진 50개의 수로 이루어진 Numpy의 배열을 기본으로 합니다. 

 

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-5, 5)  # -5부터 5까지 50으로 나눕니다. 
y = 2 * x  # x에 2를 곱해서 y좌표로 설정합니다. 

print(x)
print(len(x))
[-5.         -4.79591837 -4.59183673 -4.3877551  -4.18367347 -3.97959184
 -3.7755102  -3.57142857 -3.36734694 -3.16326531 -2.95918367 -2.75510204
 -2.55102041 -2.34693878 -2.14285714 -1.93877551 -1.73469388 -1.53061224
 -1.32653061 -1.12244898 -0.91836735 -0.71428571 -0.51020408 -0.30612245
 -0.10204082  0.10204082  0.30612245  0.51020408  0.71428571  0.91836735
  1.12244898  1.32653061  1.53061224  1.73469388  1.93877551  2.14285714
  2.34693878  2.55102041  2.75510204  2.95918367  3.16326531  3.36734694
  3.57142857  3.7755102   3.97959184  4.18367347  4.3877551   4.59183673
  4.79591837  5.        ]
50

 

만약 여기에서 n.nnnnnnn <-의 .nnnn 소수점을 지우고 싶다면 

x = np.linspace(-5, 5) 의 뒤에 endpoint = True, False 를 추가할 수 있습니다. 

 

x = np.linspace(-5, 5, endpoint = False) 

 

endpoint가 False 이면 소수점 뒤는 보이지 않습니다. 
그러나 끝자리를 버리면 섬세한 그래프가 그려지지 않으므로 설정하지 않는 것이 통상입니다. 

 

저 값들을 그래프로 가시화 해보겠습니다. 

 

linspace() 함수로 x의 좌표를 구해 데이터를 배열로 생성하고 

이것에 값을 곱해서 y 좌표로 구합니다. 

그리고 이제 plot()함수로 x좌표와 y좌표를 플롯합니다.

( 플롯하다 는 뜻은 좌표를 찍는다는 말입니다. )

그리고 이제 show()함수로 그래프를 표시해보겠습니다. 

 

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-5, 5) # endpoint = True, False 를 추가할 수 있다. endpoint가 False 이면 끝자리는 보이지 않는다. 
# 하지만 끝자리를 버리면 섬세한 그래프가 그려지지 않으므로 설정하지 않는 것이 대부분

y = 2 * x 

plt.plot(x,y)
plt.show

 

하..

plot 은 가장 기본적인 선 그래프를 그립니다. 

그 밖에도 축의 라벨이나 그래프의 타이틀, 그리드의 표시, 플롯의 범례와 선의 스타일을 지정할 수도 있습니다. 

(차트에서 범례는 그래프에 데이터의 종류를 표시하기 위한 텍스트입니다.)

각 설정은 코드 안의 주석을 참고해주세요! 

 

 

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-5, 5)
y_1 = 2 * x
y_2 = 3 * x

# 축의 라벨 
plt.xlabel("x value", size = 14) # 축 라벨의 문자 크기를 14로 지정.. 
plt.ylabel("y value", size = 14)

# 그래프의 타이틀
plt.title("My Graph")

# 그리드 표시 
plt.grid()

#범례와 선의 스타일 지정
plt.plot(x, y_1, label="y1")
plt.plot(x, y_2, label="y2", linestyle = "dashed")
plt.legend() # 범례를 표시 

plt.show()

 

...이게 되네..

 

선 그래프는 주로 시계열 그래프를 표현합니다. 

시계열 데이터는 시간에 따른 변화를 표현한 데이터를 말합니다. 

 

그럼 이제 분포 데이터를 표현하기 위해

산포도 그래프를 그려 볼게요.  scatter() (영어로 흩어지게 한다는 뜻) 함수로 산포도를 표시할 수 있습니다. 

 

import numpy as np
import matplotlib.pyplot as plt

x = np.array([1.2, 2.4, 0.0, 1.4, 1.5, 0.3, 0.7]) # x 좌표, 각 좌표를 플롯합니다.
y = np.array([2.4, 1.4, 1.0, 0.1, 1.7, 2.0, 0.6]) # y 좌표, 각 좌표를 플롯합니다. 

plt.scatter(x,y) #산포도의 플롯
plt.grid()
plt.show()
 

 

다음으로 막대 그래프를 그려볼게요. 

막대그래프는 각 수치를 비교할 때 사용하기 유용한 그래프입니다. 

bar() 함수를 사용합니다. 사용법은 아래 코드의 주석을 확인해주세요! 

#막대 그래프 

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(3)

years = ["2020", "2021","2022"]
height = [168, 174, 183]

plt.bar(x, height, color= ["red","green","yellow"])  # color= 를 통해 각 막대의 색을 지정할 수 있다. 
plt.xticks(x,years)  # x 축 혹은 y축에 있는 지표들을 ticks 라고 한다.
# x 축에 있는 값들의 지표를 years 리스트에 있는 값으로 명명한다. 

plt.show()

여기까지가 가장 기본적인 기초 입니다. 

이후에 발생하는 다양한 사용방법과 예제는 등장할 때마다 열심히... 해보겠습니다!

이제 정말로 시작된 기분이에요. ... 기본 적인 수학 능력부터 차근차근 밟아갈게요. 

오늘도 수고하셨습니다! 

반응형