본문 바로가기
Data Science/파이썬으로 데이터분석 하기

파이썬으로 데이터 분석하자 (5) - Matplotlib 기본

by 싸코 2017. 12. 8.

파이썬 Numpy  - 파이썬 라이브러리를 활용한 데이터 분석 中

※본 포스팅은 "파이썬 라이브러리를 활용한 데이터 분석"을 기억이 나지 않을 때 다시 돌아볼 목적으로 필요 내용만 간단하게 정리하였습니다.


2017/09/19 - [Data Science/Python] - 파이썬으로 데이터 분석하자 (1)

2017/09/27 - [Data Science/Python] - 파이썬으로 데이터 분석하자 (2) - IPython 사용하기

2017/10/09 - [Data Science/Python] - 파이썬으로 데이터 분석하자 (3) - NumPy 기본

2017/12/06 - [Data Science/Python] - 파이썬으로 데이터분석하자 (4) - Pandas 기본



Matplotlib 기본

파이썬을 활용한 도식화 및 시각화


matplotlib 라이브러리는 2D 그래프나 시각화를 위해 가장 많이 활용되는 중요한 라이브러리이다. 때로는 숫자보다 그림이 데이터를 이해하고 분석할 때 더 중요하며 누군가에게 설명할 때 그림의 유무는 크나큰 차이를 가져온다.


스스로 데이터 분석을 할 때도 결과를 그림으로 봐야 이해가 될 때가 많다.


ipython --pylab


pylab 모드에서는 MATLAB과 같은 인터페이스로 IPython에서 작업이 가능하다고 함




1. Figure Object

파이썬의 matplotlib에서 그래프는 Figure 객체 내에 존재하며 그래프를 위한 새로운 Figure는 plt.figure로 생성한다.

>>> fig = plt.figure()

figsize로 그래프의 크기나 세로-가로 비율을 정할 수 있음


1) Figure와 서브플롯

fig라는 Figure 객체를 생성한 후에는 fig 객체의 메소드를 사용해서 subplot을 추가할 수 있다

>>> ax1 = fig.add_subplot(2, 2, 1)     #fig객체 크기가 2x2 인 총 4개의 서브플롯중 첫 번째 선택



객체 지정 없이 plt.plot([1,2,3]) 와 같이 그래프르를 나타내면 가장 최근의 Figure 객체에 그 서브플롯을 그린다
서브플롯이 없을 경우에는 하나를 새로 생성한다



각각의 인스턴스 메서드를 호출해서 다른 빈 서브 플롯에도 직접 그래프를 그려 넣을 수 있다

'_' 는 Pythonic 한 프로그래밍 방법 중 하나인데  _  그냥 넘어가겠다는 의미로 생각하면 편하다 (없을 무)


for _, val in enumerate(somelist):

    print(val)


_ 에는 index가 올 테지만 index를 꺼내지 않기 원할 때는  _  로 작업은 진행되나  값을 가져오지는 않는다

이를 그래프를 그릴 때도 사용할 수 있다. subplot 객체를 따로 생성하지 않을 때 변수명으로  '_'을 작성하면 따로 객체가 생성되지 않고도 그래프 그리기가 가능하다


>>> _ = ax1.hist(randn(10), bins=5, color='k', alpha=0.3)




작업을 하다보면 아래 그림과 같이 여러 개의 서브플롯으로 구성된 Figure를 생성하는 일이 생기게 된다.



plt.subplots

이 메서드를 사용해서 NumPy 배열로 된 서브플롯 객체를 손쉽게 생성할 수 있다. 같은 범위 내에서 데이터를 비교해야 할 경우에 정말 편하다


fig, axes = plt.subplots(2,3)     # 2개의 figure 객체, 3개의 subplot


< pyplot.subplots 옵션 >

parameter 

description 

 nrows 

 서브플롯 # of rows 

 ncols 

 서브플롯 # of cols 

 sharex 

 모든 서브플롯이 같은 x축 눈금을 사용하도록

xlim을 조정하면 모든 서브플롯에 조정 

 sharey 

 모든 서브플롯이 같은 y축 눈금을 사용하도록

ylim을 조정하면 모든 서브플롯에 조정  

 subplot_kw 

 add_subplot()을 사용할 때 사용할 키워드 담는 dict 

 **fig_kw 

 Figure를 생성할 때 사용할 추가 arguments

 plt.subplots(2,2, figsize = (8,6))



plt.subplots_adjust

서브플롯 간 간격 조절하기

left, bottom, right, top, wspace, hspace 의 간격을 조절할 수 있음



2) 색상, 마커, 선 스타일

plt.plot(x, y, linestyle='--', color='r')


plot의 옵션으로

color

linestyle

marker

drawstyle

를 지정해서 자신만의 스타일로 그래프를 작성할 수 있음



3) 눈금, 라벨, 범례

- 눈금 변경하기
ax.set_xticks
x눈금 리스트를 전달한다 ex) ticks = ax.xticks([0, 100, 200, 300])

ax.set_xticklabels(['one', 'two','three','four'])
x눈금의 이름 정하기


- 제목 정하기
ax.set_title('My plot title')


- 범례 정하기

ax.plot( np.array, label = 'name')

label 인자에 원하는 범례 이름을 전달하면 된다

subplot 별로 범례이름을 label로 전달한 후에


>>> ax.legend(loc='best')      #가장 적합한 자리에 범례 표시


로 지정한 범례를 표시할 수 있음




4) 주석과 그림 추가

주석과 그림은 text,  arrow,  annotate 함수를 사용해서 추가할 수 있다

plt.text(x, y, 'hello', family='consolas', fontsize=10)

도표 내의 x, y 좌표에 해당 text 글자를 그려준다


- 주석 추가

ax.annotate(label, xy=좌표, xytext=텍스트좌표, arrowprops=, horizontalaligment=,verticalalignment=)

주석을 사용하고 싶다면 공식 documentation이나 gallery를 참고하는 게 좋을 것 같다




5) 그림 저장

plt.savefig()






후우후우,,,,, 그래프는 정말 정리하기 지루하고 고단하다ㅠㅜ


실제로 데이터 정리하면서 조금씩 정리해 나가기로 했다



s.value_counts().plot(kind='bar')

댓글