Bokeh란 무엇인가?
Bokeh는 Python 기반의 오픈소스 데이터 시각화 라이브러리입니다. Bokeh는 HTML과 JavaScript를 사용해 플롯을 렌더링하므로, 웹 기반 대시보드를 구축할 때 특히 유용합니다.
데이터 시각화는 복잡한 수치 계산이나 숫자 데이터를 일일이 살펴보지 않고도 데이터 속에 담긴 패턴과 흐름을 직관적으로 파악할 수 있게 해주는 중요한 과정입니다.
Bokeh는 NumPy, Pandas 등 다른 Python 패키지와 손쉽게 연동할 수 있으며, 인터랙티브한 플롯과 대시보드를 만드는 데 활용됩니다. 이를 통해 정량적인 인사이트를 청중에게 효과적으로 전달할 수 있습니다.
Bokeh의 작동 원리
Bokeh는 데이터 소스를 JSON 파일로 변환합니다. 이 파일은 JavaScript 라이브러리인 BokehJS의 입력으로 사용되며, BokehJS는 TypeScript로 작성되어 최신 브라우저에서 시각화를 렌더링합니다.
Matplotlib나 Seaborn이 정적(static) 플롯을 생성하는 것과 달리, Bokeh는 인터랙티브(interactive) 플롯을 생성합니다. 즉, 사용자가 플롯과 상호작용하면 그래프가 그에 맞게 반응하여 변화합니다.
또한 생성된 플롯은 Flask나 Django 기반 웹 애플리케이션에 임베드할 수 있으며, Jupyter Notebook에서도 렌더링할 수 있습니다.
Bokeh 설치 및 의존성
Bokeh의 주요 의존성 패키지는 다음과 같습니다.
Numpy
Pillow
Jinja2
Packaging
Pyyaml
Six
Tornado
Python-dateutil
Windows 명령 프롬프트에서 Bokeh를 설치하려면 다음 명령어를 실행합니다.
pip3 install bokeh
Anaconda 환경에서는 아래 명령어를 사용합니다.
conda install bokeh
Bokeh로 사인파 그래프 생성하기
다음 예제는 Bokeh를 활용해 사인파 선 그래프를 생성하는 방법을 보여줍니다.
from bokeh.plotting import figure, output_file, show
import numpy as np
import math
x = np.arange(0, math.pi*4, 0.1)
y = np.sin(x)
output_file("sample.html")
p = figure(title = "A simple sine wave ", x_axis_label = 'x', y_axis_label = 'y')
p.line(x, y, legend = "sine", line_width = 2)
show(p)
실행 결과

코드 설명
- 필요한 패키지들을 가져오고(import) 별칭(alias)을 지정합니다.
- NumPy 라이브러리를 사용하여 데이터를 생성합니다.
- 사인(sine) 함수를 정의하여 y값을 계산합니다.
- 'figure' 함수를 호출하여 그래프의 제목과 축 레이블을 설정합니다.
- 'output_file' 함수를 호출하여 생성될 HTML 파일의 이름을 지정합니다.
- Bokeh의 'line' 함수를 호출하여 선 그래프를 그립니다.
- 'show' 함수를 사용하여 최종 플롯을 화면에 표시합니다.