Matplotlib 차트/플롯 그리기

1. Matplotlib 개요

Matplotlib는 파이썬에서 데이타를 차트나 플롯(Plot)으로 그려주는 라이브러리 패키지로서 가장 많이 사용되는 데이타 시각화(Data Visualization) 패키지로 알려져 있다.

Matplotlib는 라인 플롯, 바 차트, 파이차트, 히스토그램, Box Plot, Scatter Plot 등을 비롯하여 다양한 차트와 플롯 스타일을 지원하며, Matplotlib.org 갤러리 웹페이지에서 다양한 샘플 차트를 볼 수 있다.

Matplotlib를 이용하여 데이타 시각화(Data Visualization)를 사용하기 위해서 과학용 파이썬 배포판인 아나콘다(Anaconda)를 설치해서 Jupyter Notebook을 사용하면 편리하다.

2. Matplotlib 사용법

Matplotlib를 사용하기 위해서는 먼저 matplotlib.pyplot 을 아래와 같이 import 한다. pyplot을 다른 이름으로 사용할 수 있지만 통상 plt 라는 alias를 사용한다. 다음 plt.plot()은 라인 플롯을 그리는 함수인데, 아래는 X축값 1,2,3과 Y축값 110,130,120을 가지고 라인 플롯을 그리는 예제이다. 마지막으로 실제 그림을 표시하는 함수인 plt.show()을 호출한다.

from matplotlib import pyplot as plt

plt.plot([1,2,3], [110,130,120])
plt.show()

Jupyter Notebook에서 위 코드를 실행하기 위해서는 코드 셀에서 Shift + Enter를 치면 아래와 같이 출력란에 차트가 그려진다.

만약 아래 첫번째 라인에서와 같이 "%matplotlib inline" 를 넣게 되면, Shift + Enter를 치지 않고 Run 버튼을 눌러 실행하여 그래프를 얻을 수 있다. 이러한 % 명령은 Cell Magic 명령어라고 불리우는 것으로 이는 파이썬 코드가 아니라 Jupyter에게 특정 기능을 수행하도록 하는 명령이다. %matplotlib inline 명령은 Jupyter에게 matplotlib 그래프를 출력 영역에 표시할 것을 지시하는 명령이다.

3. 제목과 축 레이블

플롯에 X,Y 축 레이블이나 제목을 붙이기 위해서는 plt.xlabel(축이름), plt.ylabel(축이름), plt.title(제목) 등의 함수를 사용하면 된다.

from matplotlib import pyplot as plt

plt.plot(["Seoul","Paris","Seattle"], [30,25,55])
plt.xlabel('City')
plt.ylabel('Response')
plt.title('Experiment Result')
plt.show()

4. 범례 추가

플롯에 여러 개의 라인들을 추가하기 위해서는 plt.plot()을 plt.show() 이전에 여러 번 사용하면 된다. 또한, 각 라인에 대한 범례를 추가하기 위해서는 plt.legend([라인1범례, 라인2범례]) 함수를 사용하여 각 라인에 대한 범례를 순서대로 지정하면 된다.

from matplotlib import pyplot as plt

plt.plot([1,2,3], [1,4,9])
plt.plot([2,3,4],[5,6,7])
plt.xlabel('Sequence')
plt.ylabel('Time(secs)')
plt.title('Experiment Result')
plt.legend(['Mouse', 'Cat'])
plt.show()

5. 다양한 차트 및 플롯

Matplotlib는 위에서 예시한 라인 플롯 이외에 여러 다양한 차트/플롯을 그릴 수 있는데, 각 차트/플롯마다 다른 함수들을 사용한다. 예를 들어, Bar 차트를 그리기 위해서는 plt.bar() 함수를 사용하고, Pie 차트를 그리기 위해서는 plt.pie()를, 히스토그램을 그리기 위해선 plt.hist() 함수를 사용한다.

아래는 Bar 차트를 예시한 것으로, plt.bar()를 호출하여 바차트를 그리고 있다.

from matplotlib import pyplot as plt

y = [5, 3, 7, 10, 9, 5, 3.5, 8]
x = range(len(y))
plt.bar(x, y, width=0.7, color="blue")
plt.show()
본 웹사이트는 광고를 포함하고 있습니다. 광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.