Bokeh는 파이썬에서 데이터 시각화를 돕는 오픈소스 패키지입니다. Bokeh는 HTML과 JavaScript를 사용해 플롯을 렌더링하기 때문에 웹 기반 대시보드를 구축할 때 특히 유용하며, 정량적인 인사이트를 청중에게 효과적으로 전달하는 데 큰 도움이 됩니다.
Bokeh는 데이터 소스를 JSON 파일로 변환합니다. 이 파일은 BokehJS라는 JavaScript 라이브러리의 입력으로 사용되는데, BokehJS는 TypeScript로 작성되어 최신 브라우저에서 시각화 결과를 렌더링하는 역할을 담당합니다.
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
'figure' 함수는 다양한 하위 함수들을 내장하고 있어, 이를 활용하면 원(circle), 사각형(square), 직사각형(rectangle) 등 여러 형태의 벡터화된 글리프(glyph)를 자유롭게 그릴 수 있습니다.
예제 코드
from bokeh.plotting import figure, output_file, show
plot = figure(plot_width = 300, plot_height = 300)
plot.circle(x = [1, 4, 6], y = [3,7,8], size = 20, fill_color = 'red')
plot.circle_cross(x = [2,4,5], y = [3,8,11], size = 20, fill_color = 'black',fill_alpha = 0.2, line_width = 2)
plot.circle_x(x = [5,3,2], y = [2,1,7], size = 20, fill_color = 'green',fill_alpha = 0.6, line_width = 2)
show(plot)
실행 결과

코드 상세 설명
필요한 패키지들을 임포트하고 각 모듈에 별칭(alias)을 지정합니다.
figure 함수를 호출하면서 플롯의 너비(plot_width)와 높이(plot_height)를 지정합니다.
output_file 함수를 호출하면 생성될 HTML 파일의 이름을 지정할 수 있습니다.
Bokeh에서 제공하는 circle(원), circle_cross(원 + 십자선), circle_x(원 + X자선) 함수를 데이터와 함께 호출하여 서로 다른 형태의 마커를 한 화면에 그립니다.
마지막으로 show 함수를 사용해 완성된 플롯을 브라우저에 표시합니다.