본문 바로가기
인공지능/머신러닝

5. 데이터 시각화를 위한 matplotlib

by 으노으뇨 2023. 9. 19.
728x90
반응형
SMALL

matplotlib 개념

 데이터 시각화를 위한 파이썬 라이브러리

 pyplot를 통하여 기능 사용

 .plot() 메서드를 통해 데이터를 시각화함

 .show() 메서드를 통해 화면에 출력함

설치 및 사용 방법

1) pip install matplotlib

2) 사용 : import matplotlib.pyplot as plt

종류

라인플롯 pyplot.plot(y)
막대 플롯 pyplot.bar(x,y), pyplot.barh(x,y) xticks, yticks를 통하여 해당 축의 값들 나열 가능
파이 플롯 pyplot.pie(데이터 , labels= , colors=, autopact= , shadow=True/False)
히스토그램 pyplot.hist(data ,bins)
박스 플롯 pyplot.boxlot(data)
산점도 플롯 pyplot.scatter(x , y, s = ‘마커사이트’, c=‘마커색상’)

공통 메소드

▶. title(‘타이틀’)

▶. xlabel(‘x축 label’)

▶. ylabel(‘y축 label’)

▶. legend([‘범례 1’,’ 범례 2’...]) # 하나의 그래프에 여러 개의 plot이 있을 때 설정

▶. axis([xmin, xmax, ymin, ymax])

▶. xlim(min, max)

▶. ylim(min, max)

▶. grid(True, axis='y') #x도 가능


실사용예

단순 배열데이터
import matplotlib.pyplot as plt
plt.plot([1, 3, 2])
plt.show()

데이터가 두 그룹일 경우
import matplotlib.pyplot as plt
plt.plot([1, 2, 3, 4],[4,3,2,1])
plt.show()

딕셔너리를 이용한 x, y값 작성
import matplotlib.pyplot as plt
tmp = {'data_x': [1, 2, 3, 4, 5], 'data_y': [1,4,9,16,25]}
plt.plot('data_x', 'data_y', data=tmp)
plt.show()

x축 라벨, y축 라벨 설정, 표 이름 설정, 그리드와 범례 설정
import matplotlib.pyplot as plt
plt.title('Input Graph Title Here.')
plt.plot([1,2,3,4],[1,4,9,16], label='power')
plt.xlabel('X-Axis')
plt.ylabel('Y-Axis')
plt.grid(True, axis='y')
plt.legend()
plt.show()

바(Bar) 타입 그래프
import matplotlib.pyplot as plt
import numpy as np
y=np.arange(3)
y_val=[100,200,300]
plt.barh(y,y_val, color='r')
plt.show()#이건 가로 바
plt2.bar(y,y_val, color='r')
plt2.show()#이건 세로 바

bar와 barh의 차이점

각 데이터별 x축 라벨링
import matplotlib.pyplot as plt
import numpy as np
y=np.arange(3)
y_val=[100,200,300]
plt.bar(y,y_val, color='r')
tmp_val=['A store', 'B store', 'C store']
plt.xticks(y,tmp_val)
plt.show()

여러 개의 x, y가 있는 경우 다중 그래프
import matplotlib.pyplot as plt
import numpy as np
tmp = np.arange(0.,10.,0.1)
plt.plot(tmp, tmp, 'r--'
, tmp+1, tmp**2, 'g+', tmp+2, tmp**3, 'bs')
plt.show()

산점도 그래프를 그리기
import matplotlib.pyplot as plt
import numpy as np
np.random.seed(0)
n= 30
x= np.random.rand(n)
y= np.random.rand(n)
s_marker=(20 * np.random.rand(n))**2
col= np.random.rand(n)
plt.scatter(x, y, s=s_marker, c=col)
plt.show()

728x90
반응형
LIST

댓글