Bokeh란 무엇인가?
Bokeh는 Python 기반의 데이터 시각화 라이브러리로, 오픈소스 프로젝트입니다. Bokeh는 HTML과 JavaScript를 사용해 플롯을 렌더링하기 때문에 웹 기반 대시보드를 구축할 때 특히 유용합니다.
Bokeh는 데이터 소스를 JSON 파일로 변환하며, 이 파일은 JavaScript 라이브러리인 BokehJS의 입력값으로 사용됩니다. BokehJS는 TypeScript로 작성되어 있어 최신 브라우저에서 시각화 결과물을 손쉽게 렌더링할 수 있습니다.
Bokeh의 특징
Matplotlib나 Seaborn이 정적(static) 플롯을 생성하는 것과 달리, Bokeh는 인터랙티브(대화형) 플롯을 만들어냅니다. 즉, 사용자가 플롯과 상호작용하면 그래프가 실시간으로 반응하여 변합니다.
또한 생성된 플롯은 Flask나 Django 기반 웹 애플리케이션의 출력 결과로 삽입할 수 있으며, Jupyter 노트북에서도 바로 렌더링할 수 있습니다.
Bokeh의 의존성 패키지
Numpy
Pillow
Jinja2
Packaging
Pyyaml
Six
Tornado
Python-dateutil
Bokeh 설치 방법
Windows 명령 프롬프트에서 설치하는 경우:
pip3 install bokeh
Anaconda 프롬프트에서 설치하는 경우:
conda install bokeh
임의의 직사각형 그리기
Bokeh에서는 중심점(x, y 좌표), 너비(width), 높이(height), 그리고 회전 각도(angle)를 지정하여 원하는 위치와 방향의 직사각형을 자유롭게 그릴 수 있습니다. 이 작업은 'rect' 함수를 통해 수행됩니다.
예제 코드
from math import pi
from bokeh.plotting import figure, output_file, show
output_file('rectanglesRandom.html')
p = figure(plot_width=400, plot_height=400)
p.rect(x=[1, 3, 5, 7], y=[1, 3, 5, 7], width=0.2, height=50, color="#CAB2D6",
angle=pi/3, height_units="screen")
show(p)실행 결과
위 코드를 실행하면 여러 개의 직사각형이 동일한 각도(pi/3, 약 60도)로 기울어진 상태로 표시된 인터랙티브 플롯이 'rectanglesRandom.html' 파일로 생성됩니다.
코드 설명
- 필요한 패키지들을 가져와(import) 별칭을 지정합니다.
- 'figure' 함수를 호출하면서 플롯의 너비와 높이를 설정합니다.
- 'output_file' 함수를 호출하여 생성될 HTML 파일의 이름을 지정합니다.
- Bokeh의 'rect' 함수를 호출하고, x/y 좌표, 너비, 높이, 색상, 회전 각도 등의 데이터를 전달합니다.
- 'show' 함수를 사용하여 최종 플롯을 화면에 표시합니다.