파이썬 시각화의 끝판왕 bokeh 사용하기
본문 바로가기
기타 저장소/유용한 tool

파이썬 시각화의 끝판왕 bokeh 사용하기

by _HEBB 2020. 2. 20.

bokeh

이쁘고 세련된 파이썬 시각화를
이제 bokeh 로 해보자!

 

코딩을 하다보면 눈으로 결과를 확인해야할 경우가 종종 생긴다. 특히 보고서나 논문을 작성할때 실험 결과를 그래프로 이쁘게 뽑아내야 한다. 뿐만아니라 실시간으로 처리해야하는 어떤데이터를 일목요연하게 확인해야할 때 데이터 시각화는 필수적이다. 누군가에게 보여주기 위해 또는 개인적으로 편리함을 위해 시각화는 매우 중요하다.

 

bokeh ??

bokeh 는 이러한 시각화를 도와주는 파이썬 라이브러리다. 파이썬을 사용하는 많은 사람들이 matplotlib 를 알고 있을 것이다. 거의 모든 분야에서 시각화 예제는 이 matplotlib 로 구현되어있기 때문이다. matlab 과 비슷하고, 편리하기도 하다. 하지만 단점으로는 반응형으로 만들기 어렵다는것과 무엇보다도 그닥 이쁘지 않다는 것이다. 나는 더 비주얼적으로 임팩트가 있는 툴을 찾다가 bokeh 를 찾게 되었다. 우선 시선을 사로잡는 세련된 디자인과, 다양한 기능이 있는 반응형이라는 것이 마음에 들었다. 무엇보다 jupyter완벽히 호환된다는 것이 가장 매력적이다.

 

특징

특징으로는

  • 반응형

  • 웹 기반

  • 다양한 툴박스

  • 다양한 종류의 차트

  • 스트림 데이터 처리

등이 있다.
기본적으로 렌더링 데이터를 html 로 만들어 브라우저에서 볼 수 있지만, jupyter 에서 바로 확인하고 만질 수도 있다.
추가적으로 javascript 가 친숙한 개발자라면 간단하게 자신의 홈페이지에 embedding 할 수 있다.

 

설치

간단하게 pip 로 설치가 가능하다.
pip install bokeh
터미널에 위의 명령어를 치고 import 하면 된다.

 

간단 사용법

나는 jupyter lab 환경에서 작성하지만 주피터 노트북은 물론이고, 그 어떤 환경에서든 import 만 하면 사용할 수 있다.
하지만 코드를 작성하는 곳에서 바로 결과물을 볼 수 있는 편리함을 느끼려면 주피터노트북이나 주피터랩 환경에서 사용하면 된다.

 

우선 기본적인 예시는 다음과 같다.

from bokeh.plotting import figure, output_file, show

# 데이터 준비
x = [1, 2, 3, 4, 5]
y = [6, 7, 2, 4, 5]

# HTML 파일을 따로 생성
# output_notebook() - notebook 에서 바로 확인할 때
output_file("lines.html")

# figure 만들기
p = figure(title="simple line example", x_axis_label='x', y_axis_label='y')

# figure 에 그릴 그래프 그리기
p.line(x, y, legend="Temp.", line_width=2)

# 새 브라우저 탭에 출력!
show(p)

 

위 코드를 실행하면 HTML 파일이 만들어지고 브라우저 탭이 생기며 그래프를 볼 수 있다. 물론, jupyterlab 은 html 파일을 볼 수 있는 기능을 지원하므로 jupyterlab 에서 탭을 만들어 그래프를 확인할 수 있다.

 

 

왼쪽을 보면 위 예제에서 지정한 이름의 html 파일이 만들어진 것을 볼 수 있다.

notebook 에서 바로 보고 싶다면
맨 위에 from bokeh.plotting import output_notebook 으로 모듈을 import 하고,
위의 코드에서 output_file("lines.html") 대신 output_notebook() 를 입력하면 된다.
show(p) 명령으로 jupyter 에 렌더링이 된다.

 

embed 하기

bokeh 는 HTML 파일로 꼭 만들지 않아도 자신만의 홈페이지에 embed 할 수 있다. js 스크립트 형태로 그래프를 출력할 수 있기 때문이다. 자신의 홈페이지에 갖다 붙이기만 하면 자신의 사이트를 시각적으로 띄게 만들 수 있다.

 

from bokeh.plotting import figure
from bokeh.embed import components

plot = figure()
plot.circle([1,2], [3,4])

script, div = components(plot)
print(script,div)

 

script 변수와 div 변수를 홈페이지에 복붙하면 바로 나타나게 될 것이다.
아직 해보진 않았지만 곧 해보면 결과물도 함께 올려보겠다.

 

[업데이트] embed 예시

2020/03/08 - [기타 저장소/유용한 tool] - bokeh 그래프 티스토리에 embedding 하기!

 

bokeh 그래프 티스토리에 embedding 하기!

티스토리에 bokeh 임베딩하기 2020/02/20 - [기타 저장소/유용한 tool] - 파이썬 시각화의 끝판왕 bokeh 사용하기 bokeh 에 대한 이전글에서 중요한 한가지를 빼먹었는데, 블로그에 그래프를 임베딩하는 것이었다..

diplabs.tistory.com

 

예시

bokeh 로 그릴 수 있는 그래프의 예시를 준비해보았다.

나는 주식에 대한 관심이 많아서 캔들차트, 이동평균선을 비롯한 여러가지 지표를 직접 그려보았다. 주식데이터는 따로 데이터를 크롤링했다. 이 그래프는 jupyter 에서 구동한 것을 움짤로 만든것이다.

 

 

이외에도

 

 

등의 다양한 반응형 그래프를 만들 수 있다. 위 3개의 자료는 예제로 만들어진 그래프를 웹에서 직접 만져본것이다.
아주 만족할만한 수준의 자료로 활용하기에 좋다.

 

더 많은 기능

사실 bokeh 는 더욱 강력한 기능이 있다. bokeh 를 서버처럼 열어놓고 실시간 데이터 처리를 할 수도 있다. 그런데 이 기능은 강력하지만 쓰기가 좀 까다로운것 같다.

어쨌든, 웹 기반으로 만들어져서 그런지, 확장성이 뛰어나고 호환성이 매우 좋다.

 

효과적인 시각화를 위해 bokeh 를 쓰자

요즘은 반응형이 대세다. 정지되어있는 것보다 움직이는 것이 매력적이고 어디서든 사용될 수 있는 것이 환영받는다. 이쁘고 세련된 툴을 잘 다루는 것도 경쟁력이 될 수 있다. 더 퀄리티있는 보고서를 만들수도, 자신의 홈페이지를 매력있게 만들 수도 있다.

 

이제 bokeh 를 적극적으로 사용해보자!
>> bokeh 홈페이지

 

 

- 자료출처 : bokeh 홈페이지

댓글