본문 바로가기
Python/Matplotlib

pyplot 개요와 그래프 작성 기초 - matplotlib(6)

by 콩돌 2019. 4. 10.
반응형

파이썬 버전 3.7 기준

matplotlib 버전 3.0.3 기준



 Plot의 작성


본 포스팅에서는 파이썬 라이브러리인 matplotlib를 사용하여 plot함수를 사용하여 plot을 작성하는 법에 대해 다룬다.



  pyplot의 개요 


matplotlib.pyplot은 MATLAB과 같은 사용환경 조건을 만들 수 있는, 커맨드스타일함수를 모아놓은 패키지이다.

각각의 pyplot 함수는 figure에 변화를 줄 수 있다. 예를들어 figure를 작성, 만들어진 figure에 plotting 영역을 작성, plotting 영역에 선을 통한 그래프 작성, 라벨 제목 작성 등 다양한 변화가 포함된다. 

 

matplotlib.pyplot에서는 다양한 상태가 함수 호출을 통해 보존되기 때문에, 현재 그림 및 플로팅 영역과 같은 내용을 추적하고, 플로팅함수는 현재 사용되는 축들(axes)을 편집하게 된다.(여기에서 축(Axes)은 하나 이상의 축에 대한 수학적 용어가 아닌 그림의 축 부분을 나타낸다.)


참고사항

  pyplot API는 일반적으로 객체지향 API보다 유연하지 않다. 대부분의 함수호출은 Axes 오브젝트로부터의 메서드로써 호출된다.



  pyplot의 plot함수를 이용한 plot의 작성


  간단한 plot의 작성 방식

plot의 간단한 입력형식은 다음과 같다.


하나의 라인그래프 입력 형식)

line,=plot([x], y, [fmt], **kwargs)  


다수의 라인그래프 입력 형식 1)

line1, line2, line3, ...=plot([x1], y1, [fmt1], [x2], y2, [fmt2], [x3], y3, [fmt3], ..., **kwargs)  


대괄호로 표시된 변수들은 입력을 생략해도되며 생략될 경우 기본값이 자동으로 들어간다.

단, 두번째 경우처럼 여러 개의 데이터를 입력할 경우에는 생략될 수 있는 x값이나 fmt중에 하나를 입력하여 데이터를 구분해줘야 제대로 입력된다.


위의 형식 말고도 다수의 라인그래프를 그리는 방법이 존재하는데 다음과 같다.


다수의 라인그래프 입력 형식 2)

line1,=plot([x1], y1, [fmt1], **kwargs)

line2,=plot([x2], y2, [fmt2], **kwargs)

...



  라벨링된 데이터의 plot

먼저 라벨링된 데이터의 plot이라고 해서 plot에 라벨을 붙이는 것이 아니다.

여기서 말하는 라벨링된 데이터라 함은 문자열로 인덱싱이 가능한 데이터를 의미한다. 

라벨이 데이터에 포함되는 데이터 형식은 파이썬의 딕셔너리, pandas의 DataFrame, Numpy의 Structrued array등이 있다.

plot함수를 이용하면 라벨 데이터를 플롯팅하는 것이 가능한데 다음과 같은 방법으로 행할 수 있다. 


라벨된 데이터 입력 형식)

lines,=plot('xlabel', 'ylabel', data=obj)


먼저 'xlabel', 'ylabel'은 각각 문자열 인덱스를 의미하며 딕셔너리의 경우 키에 해당되는 문자열이다.

obj에는 딕셔너리와 같은 라벨링된 데이터를 입력할 수 있다. 

아래 예제는 딕셔너리로 수행한 예제이다.


플롯 작성 예제)

# matplotlib.pyplot의 import

In[2]: import matplotlib.pyplot as plt


# 입력 데이터 정의 및 plot 작성

In[44]: dataplot = {'a':[1,2,3,4], 'b':[4,5,6,7], 'c':[8,9,10,11]}

In[45]: plt.plot('a','b', data=dataplot)

Out[45]: [<matplotlib.lines.Line2D at 0x147dc750>]




 

 

 

 

 참고자료

  https://matplotlib.org/tutorials/introductory/pyplot.html#sphx-glr-tutorials-introductory-pyplot-py

  https://matplotlib.org/api/_as_gen/matplotlib.pyplot.plot.html#matplotlib.pyplot.plot

 

 

 

 



반응형

댓글