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