Skip to content

파이썬 라이브러리 Matplotlib #
Find similar titles

Structured data

Category
Programming

Matplotlib #

다양한 시각화 라이브러리에 대하여 #

들어가기에 앞서 다양한 시각 라이브러리에 대해 말하고자 한다. R언어를 이용한다면 ggplot이란 라이브러리가 독점적으로 쓰이고 있지만, python에서는 matplotlib을 포함하여 seaborn, plotly, folium, 등 여러 라이브러리가 분석가의 목적에 따라 혹은 기호에 따라 다양하게 쓰이고 있다. 필자에게 이들 중 가장 대중적인 기본 플랏(적당히 간단하며 플랏다운)을 고르라면 단연 matplotlib이며 이것보다 좀더 화려하게 쓰고 싶다면 seaborn, plotly를 이용하기 시작한다.

Matplotlib 란? #

Matplotlib는 수많은 파이썬 라이브러리 중에서 플롯(그래프)을 그릴 때 주로 쓰이는 2D, 3D 플롯팅 패키지(모듈)이다. 현재까지(19년 12월 기준) open source를 통해 3.1.1 버전까지 개발됐으며 자세한 정보는 아래 링크를 통해 확인할 수 있다.

홈페이지

개발자 #

Matplotlib 는 저명한 파이썬 라이브러리 개발자인 John Hunter(1968-2012)에 의해 세상에 태어났다. 그는 Matplotlib 이외에도 여러 프로젝트에 참여했으며 현재 그를 추모하는 펀드가 마련되어 그 업적을 기리고 있다. 자세한 사항은 이곳에서 확인할 수 있다.

소스코드 및 설치 #

Matplotlib 는 open source 로 제공되고 있으며 Git 이나 Matplotlib 홈페이지에서 소스코드를 다운받을 수 있다.

소스코드

그러나 pip 를 사용해 설치하는게 가장편하고 일반적이다.

# pip search matplotlib
# pip install matplotlib
# pip install --upgrade matplotlib

Pandas와 Matplotlib #

제목을 Pandas와 Matplotlib이라 했지만 파이썬 시각화 모듈들에 해당하는 내용이다. 대부분의 시각화 모듈은 인풋을 Dataframe이란 데이터타입을 이용한다. 리스트나 딕셔너리 데이터 형태로 집어 넣어도 되나, Dataframe을 이용하였을 때 새로운 플랏에 대해 적용하기가 쉽다. 따라서 필수조건은 아니지만 시각화 모듈을 전문가처럼 쓰고 싶다면 Pandas 모듈도 손쉽게 다룰 수 있어야 한다.

예시) 간단한 플랏팅 #

히스토그램 #

본 코딩예제는 jupyter notebook환경에서 잘 작동하고 파이썬은 v3.7을 이용하였다. 파이썬이 설치되어있는 어느 환경에서도 사용가능 하도록 데이터셋은 seaborn의 오픈 데이터를 사용하게 끔 코딩하였다. seaborn이 설치되어 있지 않다면 pip install seaborn후에 진행 하길 바란다.

import seaborn as sns
import matplotlib.pyplot as plt

# seaborn에 들어있는 tips 데이터 로딩
tips = sns.load_dataset('tips')
tips.head()

Image

총 7개의 칼럼이 있음을 확인하였다. pandas 라이브러리를 import하지 않았지만 로드된 tips데이터 타입은 Dataframe이다. 즉 head()와 같은 Dataframe문법을 이용할 수있다. 바로 matplotlib으로 그림을 그려보자면

# 기본틀 마련, 빈 도화지 생성
fig = plt.figure(figsize=(6,6))    # 6x6 크기 만큼의 빈도화지생성
ax = fig.add_subplot(1, 1, 1)    # 가로 세로를 각각 1개로 격자 분할한다.

Image

total_bill컬럼을 이용하여 히스토 그램을 그린다. 이때 구간은 총 10개로 나눈다.

ax.hist(tips['total_bill'], bins=10)
ax.set_title('Histogram')
ax.set_xlabel('Freq')
ax.set_ylabel('total bill')
fig

Image

산점도 #

위를 이해했다면 이제는 데이터와 플랏 종류의 변경으로 다양한 그림을 그릴 수 있다.

# 빈도화지 생성
fig2 = plt.figure(figsize=(6,6))
ax = fig2.add_subplot(1,1,1)

# x축이 'totall_bill', y축이 'tip'인 산점도 그리기
ax.scatter(tips['total_bill'], tips['tip'])
ax.set_title('Scatter plot!')
ax.set_xlabel('total bill')
ax.set_ylabel('tip')

Image

응용범위 #

Matplotlib는 기본적인 선형그래프부터 글로벌한 통계를 뒷받침하는 그래프까지, 그 상상이상의 능력을 갖고 있다. 일반적인 예로, 미국 지도위에 허리케인의 이동경로를 그리는 것이 가능하다. 아래의 그림은 2005년 8월말에 미국 남동부를 강타한 초대형 허리케인 카트리나의 이동 경로를 Matplotlib를 이용해 나타낸 것이다.

Image

[저작자] by Cartopy
[이미지출처] http://scitools.org.uk/cartopy/docs/latest/gallery.html

이외에도 다양한 백그라운드 그림을 이용한 플롯팅이 가능하다(more). AxesGrid tool 을 이용해 transcript expression level에 대한 시각화 표현이 가능하고, scatter plot, histogram 등 NGS 분석에 필요한 다양한 그래프제작에 응용할 수 있다.

Image

[저작자] by AxesGrid
[이미지출처] http://matplotlib.org/1.3.1/mpl_toolkits/axes_grid/users/overview.html

Example source code #

다양한 응용이 가능한 만큼 Matplotlib는 다양한 예제소스를 제공하고 있다. animation, api, lines_bars_and_markers 이외에 앞서 언급한 axes_grid 등 다양한 예제소스를 통해 학습하고 자신만의 그래프를 제작하도록 돕고있다.

Example source code

Incoming Links #

Related Articles #

Suggested Pages #

0.0.1_20140628_0