데이터 가시화 (d3.js , Plotly, Grafana, Kibana 등)

Plotly 와 파이썬을 이용해서 모던한 차트 만들기

[하마] 이승현 (wowlsh93@gmail.com) 2017. 3. 22. 10:18




퀘벡주 몬트리올에 본사가 있는 온라인 분석 및 데이터 시각화 도구입니다. Plotly는 Python, R, MATLAB, Perl, Julia, Arduino 및 REST 용 과학 그래프 라이브러리뿐만 아니라 개인 및 공동 작업을위한 온라인 그래프, 분석 및 통계 도구를 제공합니다.


역사

Plotly는 Alex Johnson, Jack Parmer, Chris Parmer 및 Matthew Sundquist가 설립했습니다. 창업자들은 과학, 에너지 및 데이터 분석 및 시각화에 전문성이 있었구요. 초기 직원으로는 캐나다의 소프트웨어 엔지니어 인 Christophe Viau와 캐나다의 지구 물리학자인 Ben Postlethwaite가 있습니다. Plotly는 캐나다 혁신 거래소 (Canadian Innovation Exchange)에서 캐나다에서 가장 인기있는 20 대 혁신 기업 중 하나로 선정되었습니다. 


제품 

Plotly는 6 개의 주요 제품을 제공합니다.

Plot.ly 
데이터를 그리드로 가져오고 분석하고 통계 도구를 사용하기위한 그래픽 사용자 인터페이스가 있습니다. 그래프를 삽입하거나 다운로드 할 수 있습니다. 주로 그래프를 빠르고 효율적으로 만드는 데 사용됩니다.

API libraries  (<-- 우리가 실습해 볼것임)
Python, R, MATLAB, Node.js, Julia 및 Arduino와 REST API에 대한 API 라이브러리. Plotly는 IPython으로 인터랙티브한 그래프를 스타일화하는 데에도 사용할 수 있습니다.

Figure Converters
matplotlib, [15] ggplot2, [16] 및 IGOR Pro [17] 그래프를 대화 형 온라인 그래프로 변환합니다.

Plotly Apps
Google 크롬을위한

Plotly.js
그래프 및 대시 보드를 만들기위한 오픈 소스 [19] 자바 스크립트 라이브러리입니다. [20]

Plotly Enterprise
Plotly의 온 프레미스 설치입니다. 


기술 

Plotly는 Python과 Django 프레임워크를 사용하여 제작되었으며 프론트 엔드는 JavaScript와 시각화 라이브러리 D3.js, HTML 및 CSS를 사용합니다. 파일은 Amazon S3에서 호스팅됩니다.

자 여기까지 위키의 내용이고, 이제 본격적으로 실습 시작합니다.


Plotly  파이썬 라이브러리



matplotlib 의 구린 스타일의 그래프에 비해 Plotly의 Python 그래프 라이브러리는 깔끔하고 다양한 그래프를 온라인 또는 오프라인에서 손쉽게 만들 수 있습니다. 라인 플롯, 스캐터 플롯, 영역 차트, 막대 차트, 오류 막대, 상자 플롯, 막대 그래프, 히트 맵, 하위 플롯, 다중 축, 폴라 차트 및 거품 형 차트를 만들 수 있겠습니다. 이 글 젤 마지막에서 데모들을 보실 수 있습니다.


오프라인에서 차트작업하기 

저는 파이썬으로 차트를 그냥 내 PC에서만 보고 싶기 때문에 이러한 관심 사항에 맞는 부분에 대해서만 살펴보려합니다. 즉 오프라인에서 보기 위한 내용이며 온라인 게시를 위해서는 다음 문서를 참고하세요.

->
Plotly online 시작하기

Plotly Offline을 사용하면 그래프를 오프라인으로 생성하고 로컬로 저장(HTML)할 수 있으며 이렇게 하면 온라인 에서 필요한 인증작업 같은게 필요 없어서 좋긴합니다.  

이제 쥬피터노트북을 사용하는 방법부터 차트 만드는 것 까지 순차적으로 설명하겠습니다.

import plotly   <-- 임포트 
plotly.offline.plot  <-- 이 명령어로 실행시키는게 핵심입니다.

(* 제가 잘 모르는 부분이 있을 가능성이 있으며 앞으로 오류 및 추가정보가 업데이트될 수도 있음을 알려드려요



1. 쥬피터 노트북을 통해 사용 (윈도우즈 기준)


1. 먼저 아나콘다를 설치합니다.

Anaconda Download [link]

참고로 저는 2.7.x 로 설치하였습니다. 좀 더 자세한 내용은 ->  윈도우에 아나콘다 설치하기

패스(PATH)는 자동으로 잡히더군요. 아나콘다 설치하면 Python 및 아주 다양한 패키지들이 함께 설치됩니다.

2. 쥬피터 노트북 설치 (커맨드 창에서 실행하세요)

$ pip install jupyter


3. 쥬피터 노트북 실행

 $ jupyter notebook


위와 같이 브라우저를 통해 실행되며, 브라우저를 통해서 코드를 작성할 수 있습니다. 

* 엔씨소프트에서 작성한 쥬피터노트북에 대한 찬사를 보시려면 요기 => 주피터노트북 장점


Plotly 파이썬 실습 

1.  plotly 설치합니다.  ( 우리 차트 만드는게 목적이죠? 이제서야 설치합니다) 

$ pip install plotly  

$ pip install plotly --upgrade


2. 실습할 폴더/파일을 쥬피터 노트북에 만들자.

위와 같이 폴더 하나 만드시고, 그 폴더에서 Python 2 로 파일 하나를 만드세요.


3. 코드 작성 (버전 확인)

버전이 적어도 1.9.4 이상이어야 합니다.


4. 첫번째 실습 (라인 차트) 

import plotly

from plotly.graph_objs import Scatter, Layout

print plotly.__version__

plotly.offline.plot({

    "data": [Scatter(x=[1, 2, 3, 4], y=[4, 3, 2, 1])],

    "layout": Layout(title="hello world")

})

를 입력하고 shift+ 엔터를 치면 실행되고 디렉토리에 temp-plot.html 이 생성됩니다. 
html 파일을 브라우저에서 실행하면 아래와 같습니다.



5. 두번째 실습 (스캐터 차트)

import plotly


import plotly.plotly as py

import plotly.graph_objs as go


# Create random data with numpy

import numpy as np


N = 1000

random_x = np.random.randn(N)

random_y = np.random.randn(N)


# Create a trace

trace = go.Scatter(

    x = random_x,

    y = random_y,

    mode = 'markers'

)


data = [trace]


# Plot and embed in ipython notebook!

plotly.offline.plot(data)


결과)



2. PyCharm 에서 일반적 사용 

뭐 특별한게 없습니다. 그냥 쓰던 PyCharm 등에서 실행하면 됩니다.
(제가 잘 모르는 부분이 있을 수도 있으며 앞으로 오류등 업데이트될 수도 입니다) 


버전 확인

import plotly
print plotly.__version__

Plotly 버전을 확인하시라~ 오프라인 플로팅에는 버전 1.9.4 이상이 필요합니다.


그래프 그리기 
import plotly
from plotly.graph_objs import Scatter, Layout
print plotly.__version__

plotly.offline.plot({
"data": [Scatter(x=[1, 2, 3, 4], y=[4, 3, 2, 1])],
"layout": Layout(title="hello world")
})

다음 코드를 작성하고 실행해 하세요. 


자동으로 HTML 파일로 EXPORT 됨. 


temp-plot.html 파일이 만들어겼네요.


브라우저를 통한 확인


브라우저에 이렇게 깔쌈한 차트가 그려졌습니다. 간단하죠? ^^




더 많은 예들  바로가기