Bokeh는 데이터 시각화를 위해 널리 사용되는 Python 패키지로, 오픈 소스 프로젝트입니다. Bokeh는 HTML과 JavaScript를 사용해 플롯을 렌더링하기 때문에 웹 기반 대시보드를 개발할 때 특히 유용합니다.
Bokeh는 NumPy, Pandas 등 다른 Python 패키지와 손쉽게 연동할 수 있으며, 이를 통해 인터랙티브 플롯이나 대시보드를 간편하게 제작할 수 있습니다.
Matplotlib이나 Seaborn이 정적인(static) 그래프를 생성하는 것과 달리, Bokeh는 사용자와 상호작용하는 동적 플롯을 만들어냅니다. 즉, 사용자가 그래프에 마우스를 올리거나 확대·축소하면 그래프가 그에 맞게 반응합니다. 이렇게 만든 플롯은 Flask나 Django 기반 웹 애플리케이션에 삽입할 수 있고, Jupyter Notebook에서도 바로 렌더링할 수 있습니다.
Bokeh 설치 및 의존성
Bokeh를 사용하기 위해 필요한 의존성 패키지는 다음과 같습니다.
Numpy Pillow Jinja2 Packaging Pyyaml Six Tornado Python-dateutil
Windows 명령 프롬프트에서 Bokeh를 설치하려면 아래 명령어를 실행합니다.
pip3 install bokeh
Anaconda 환경에서는 다음 명령어를 사용합니다.
conda install bokeh
예제: 마우스 오버 시 데이터를 표시하는 색상 산점도
아래 예제는 hover(마우스 오버) 도구를 포함한 다양한 도구를 활용하여, 5,000개의 무작위 데이터 포인트를 색상별로 표현하는 산점도를 생성합니다.
import numpy as np
from bokeh.plotting import figure, output_file, show
N = 5000
x = np.random.random(size=N) * 125
y = np.random.random(size=N) * 125
radii = np.random.random(size=N) * 1.35
colors = [
"#%02x%02x%02x" % (int(r), int(g), 150) for r, g in zip(40+2*x, 30+2*y)
]
TOOLS="hover,crosshair,pan,wheel_zoom,zoom_in,zoom_out,box_zoom,undo,redo,reset,tap,save,box_select,poly_select,lasso_select,"
p = figure(tools=TOOLS)
p.scatter(x, y, radius=radii,
fill_color=colors, fill_alpha=0.6,
line_color=None)
output_file("colorscatter.html", title="Color scatter plot")
show(p)
실행 결과

코드 설명
필요한 패키지들을 가져와(import) 별칭(alias)을 지정합니다.
'random' 함수를 사용해 x, y 좌표와 반지름 값으로 구성된 무작위 데이터를 생성합니다.
x, y 값에 따라 RGB 형식의 색상 리스트를 정의하여, 각 데이터 포인트에 서로 다른 색상을 적용합니다.
TOOLS 문자열에 'hover' 도구를 포함시켜, 마우스를 포인트 위에 올리면 해당 데이터 정보가 표시되도록 설정합니다.
'figure' 함수를 호출해 플롯 객체를 생성하고, 'scatter' 함수에 데이터와 색상, 투명도 등을 전달하여 산점도를 그립니다.
'output_file' 함수를 호출해 결과가 저장될 HTML 파일의 이름을 지정합니다.
'show' 함수를 사용해 최종 플롯을 화면에 표시합니다.