안녕하세요. 문범우입니다.
이번 포스팅에서는 파이썬 기반 시각화 라이브러리인 matplotlib에 대해서 알아보도록 하겠습니다.
해당 내용은 flearning의 김길호님의 강의를 바탕으로 작성되었습니다.
https://www.flearning.net/courses/6
1. Matplotlib 이란?
matplotlib은 다양한 데이터를 많은 방법으로 도식화 할 수 있도록 하는 파이썬 라이브러리로써, 우리는 matplotlib의 pyplot을 이용하게 됩니다.
이는 mathworks에서 개발한 매트랩(MATLAB)과 비슷한 형태를 가지고 있습니다.
matplotlib을 이용하면 우리가 이전에 알아본 numpy나 pandas에서 사용되는 자료구조를 쉽게 시각화 할 수 있습니다.
matplotlib을 사용하기 위해서는 먼저 matplotlib을 설치하고 아래와 같이 import를 해주어야 합니다.
import matplotlib
import matplotlib.pyplot as plt
또한 jupyter notebook에서 그래프를 제대로 확인하기 위해서는 아래와 같은 매직 커맨드를 작성해주셔야 합니다.
%matplotlib inline
이러한 매직커맨드는 맨 뒤에 inline 이외에도 우리가 아래에서 사용하는 nbagg 등의 다양한 속성이 있습니다.
Matplotlib 기초¶
1. Matplotlib 이란?¶
In [11]:
import matplotlib
import matplotlib.pyplot as plt
%matplotlib nbagg
#위와 같은 것이 %로 시작하는 것을 jupyter notebook의 magic command라고 한다.
# %who는 변수명의 리스트를 보여주고 %magic 은 모든 매직명령어를 보여준다.
# 전체적인 magic 명령어에 대해서는 다음 블로그를 참고
# http://studymake.tistory.com/601
# matplotlib 을 jupyter notebook에서 사용할 때, plot의 이미지를 보여주기 위해 magic command를 사용하는데,
# 이때 우리가 사용하는 nbagg 이외에도 다음과 같은 요소를 사용할 수 있다.
# Available matplotlib backends: ['osx', 'qt4', 'qt5', 'gtk3', 'notebook', 'wx', 'qt', 'nbagg','gtk', 'tk', 'inline']
# 사용되는 명령어에 대한 차이점이 정리되어 있는 사이트는 따로 찾지 못했지만
# 각각에 대해서는 matplotlib의 공식문서에서 참고 할 수 있는듯 하며,
# 우리가 사용하는 nbagg에 대해서는 다음 링크에서 확인할 수 있다.
# https://matplotlib.org/users/prev_whats_new/whats_new_1.4.html#the-nbagg-backend
import numpy as np
import pandas as pd
In [12]:
# Series를 통한 line plot 그리기
s = pd.Series(np.random.randn(10).cumsum(), index=np.arange(0, 100, 10))
s
Out[12]:
In [13]:
# 위에서 정의한 s라는 시리즈에 대해서 line plot을 그리고 싶다면?
s.plot()
Out[13]:
s 라는 Series에서의 index와 value를 통해 그래프가 그려졌다.
그래프 우측상단의 전원버튼을 누르기 전까지 우리는 해당 그래프를 interactive하게 조작할 수 있다.
In [14]:
# DataFrame을 통한 line plot 그리기
df = pd.DataFrame(np.random.randn(10, 4).cumsum(axis=0),
columns=["A", "B", "C", "D"],
index=np.arange(0, 100, 10))
df
Out[14]:
In [16]:
df.plot()
Out[16]:
In [17]:
# 하나의 열에 대해서만 보고 싶다면?
df['B'].plot()
Out[17]:
Bar plot 그리기¶
In [18]:
s2 = pd.Series(np.random.rand(16), index=list("abcdefghijklmnop"))
s2
Out[18]:
In [19]:
s2.plot(kind='bar')
Out[19]:
In [21]:
# 가로방향의 bar plot그리기
s2.plot(kind='barh')
Out[21]:
In [22]:
df2 = pd.DataFrame(np.random.rand(6, 4),
index=["one", "two", "three", "four", "five", "six"],
columns=pd.Index(["A", "B", "C", "D"], name="Genus"))
df2
Out[22]:
In [23]:
df2.plot(kind='bar')
Out[23]:
In [28]:
df2.plot(kind='barh', stacked=True)