Matplotlib을 상세히 다뤄보도록 하자.
들어가기전에
여기에서는 matplotlib를 활용하여 챠트를 만들어보는 작업을 하도록 한다.
아래와 같이 작업해보자
![](https://t1.daumcdn.net/cfile/tistory/9934343359D768B030)
그렇게 입력하고 shit + tab을 눌러보면..
![](https://t1.daumcdn.net/cfile/tistory/9910A33359D768B01C)
아래와 같은 결과를 확인할 수 있다.
몇가지 기능을 하나씩 소개하겠다.
Funtional로 구현하는 방식
전 장에서 이야기했지만, mtplotlib를 구현하는 방식은 Functional로 사용하는 방법과 객체지향(Object Oriented)방식으로 구현하는 방법 두가지로 나뉠 수 있다. 일단 Functional로 구현하는 방식에 대해서 이야기 하겠다. (후에 기술하겠지만 Object Oriented 방식으로 개발하는 것이 훨씬 용이하다.)
xlabel, ylabel, title
xlabel은 Xlabel을 추가하는 함수이고
ylabel은 Ylabel을 추가하는 함수이고
title은 Title을 추가하는 함수이다.
![](https://t1.daumcdn.net/cfile/tistory/99FE343359D768B01E)
즉, 실행하면 다음과 같이 만들 수 있겠다.
헌데 그래프를 작성할 때, 그냥 하나만 작성해서 보여줄 일은 실상 별로 많지 않다.
비교표로 두 개의 그래프를 동시에 작성하던지, 아예 두개의 차트로서 표현을 해야할 때가 있다.
subplot 함수
그래서 subplot함수가 엄청 유요하다. subplot에는 파라메터를 최소 3개를 요구한다. 몇개의 행과 열로 구성될 것이고, 그중에 몇 번째것인지.
plot 함수
plot(x,y)만 써줘도 되지만 세번째 파라미터에 색상을 집어 넣어주면 색상까지 입혀져있는 모습을 확인할 수 있다.
![](https://t1.daumcdn.net/cfile/tistory/9950AF3359D768B12E)
Object Oriented로 구현하는 방식
우리가 class를 초기화하는 것처럼 fig = plt.figure()라는 방식으로 빈 figure object를 만들고 거기에 각 속성을 집어넣는 방식이다.
생각보다 매우 쉬우니까 이 방법으로 개발하자.
아래 이미지를 보면 아까전에 봤던 것과 비슷한 모습이 보이기도 하고, 새로운 녀석들이 보이기도 한다.
예를 들어 plt.Xlabel('X Label')은 axes.set_xlabel('XLabel')로 변경된 것을 확인할 수 있다.
눈치가 있으면 느꼈겠지만 fig.add_axes가 뭔가 중요한 역할을 하는 것 같다... 후술하겠다.
![](https://t1.daumcdn.net/cfile/tistory/9931CD3359D768B230)
기본적으로 fig = plt.figure() 후 axes = fig.add_axes([.1, .1, .8, .8])은 암기하자
아래와 같이 두개의 챠트를 중복해서 그릴 수도 있다.
( 옛날에 이런 거 한 번 그릴려면 정말 난리가 났었다. 옛날 activeX 컴포넌트에서는 저것을 그릴 수 있는 유료콤포넌트가 없어서 외주 고객에게 정말 많이 깨졌었는데.. 이런 게 무료라니.. 이런 게 이렇게 쉽게 구현된다니.. 정말 기가 차다. 하긴 벌써 15년전 이야기니까... )
fig.add_axes함수
이 함수는 각각의 위치를 지정하는 함수다.
axes1과 같은 경우 0.1, 0.1, 0.8, 0.8이라고 작성이 되어있는데 , 첫 0.1은 이미지의 x축의 위치, 두번째 0.1은 이미지의 y축의 시작위치, 세번째 0.8은 이미지의 가로길이, 네번째 0.8은 높이를 의미한다.
0~1까지 값을 입력할 수 있으며 모두 상대적인 길이이다.
axes2도 마찬가지다. 훨씬 이해하기 쉬울 것이다. 0.2정도의 가로 위치에, 0.5정도의 높이에, 0.4정도의 너비, 0.3정도의 높이로 표현을 하겠다는 것이다.
![](https://t1.daumcdn.net/cfile/tistory/9962903359D768B22C)
혹시나 이해가 안될까봐 하나씩 바꾸면서 작성을 해보았다. 이래도 이해가 안가면 나도 난감해질 수 있다.
![](https://t1.daumcdn.net/cfile/tistory/99771D3359D768B32A)
복합편
자 이제, 기초적인, 주요하게 사용되는 함수들을 배웠다. 활용을 해보도록 하자.
챠트 두개에 지금까지 배웠던 모든 것을 다 입력해보도록 하자.
![](https://t1.daumcdn.net/cfile/tistory/9927CA3359D768B31A)
쪼개기
functional api를 사용할 때 subplot함수를 활용했었던 것을 기억하는지 모르겠다.
마찬가지로서 객체지향 방식 구현에서도 동일하게 활용할 수 있다.
한 화면에 이미지를 6개를 넣을수도 3개를 넣을 수도 있다.
![](https://t1.daumcdn.net/cfile/tistory/9943B63359D768B420)
tight_layout 함수
tight_layout은 각 챠트들이 겹치지 않도록 해주는 정말 고마운 함수다. 항상 사용하도록 하자.
Size와 DPI 조절
챠트를 그리다 보면 width와 height를 조절해야할 필요가 있다. 이때, figsize가 사용된다.
"인치"가 단위로서 사용되는 것을 필히 유의하자.
![](https://t1.daumcdn.net/cfile/tistory/99C4183359D768B52B)
Legend의 활용
한 챠트에 여러개의 그래프 표현이 필요할 때가 있다. 그럴 때는 색상 혹은 marker로서 구분을 하는데 이때, legend가 있으면 굉장히 편리하다.
legend함수
legend함수를 통해서 legend가 어디에 위치할지를 결정할 수 있다. parameter 속성을 확인해보면 다양한 값이 있으니 직접 확인해보도록.
예를 들어 10이라고 하면 정가운데에 위치한다.
![](https://t1.daumcdn.net/cfile/tistory/993F9D3359D768B520)
또한 상대수치를 입력하여 옮길 수도 있다. 어쩔대는 아예 외부에다가 둘때 더 이쁘더라.
Plot 모양새 바꾸기 정리
plot 함수를 총정리해보았다.
color, linewidth, alpha, linestyle, marker, markersize, markerfacecolor, markeredgewidth, markeredgecolor등 여러가지가 있다.
나는 아래이미지처럼 초록색의 외곽선 마커를 갖고 있고 노란색으로 채워져있으며 선이 ":" 로 구성되어있는 챠트로 만들어보았다. 어떤가?
![](https://t1.daumcdn.net/cfile/tistory/9988DC3359D768B631)
수치 변경에 따른 결과는 아래 챠트의 내용과 같다. 총정리랄까...
![](https://t1.daumcdn.net/cfile/tistory/99C0FB3359D768E01B)
축의 모양 변경
set_xlim함수, set_ylim함수
set_xlim함수와 set_ylim함수는 x와 y축에서 데이터가 표시될 구간을 결정한다.
예를 들어, 데이터값들이 1~100까지 있다고 하더라도, [0,1]이라고 지정했다면 1~100값은 표시되지 않고 0~1까지만의 값이 표시되는 것이다.
![](https://t1.daumcdn.net/cfile/tistory/99D7143359D768E118)
그이외의 방법들
scatter함수
scatter함수는 값들을 말그대로 흩뿌리는 효과를 낸다.
hist함수
hist함수는 데이터의 값을 히스토그램으로 만들어준다.
![](https://t1.daumcdn.net/cfile/tistory/99FEB83359D768E114)
여기까지 Matplotlib를 활용하여 챠트를 만들어 보는 방법을 정리해보았다.
이외에도
아래의 사이트는 꼭 들어가볼 것을 권한다.
간략하게 정리해보았는데, 어땠는지 모르겠다.
궁금한 사항있으면 언제든지 댓글 남겨주세요. 감사합니다.