Bokeh란 무엇인가?
Bokeh는 파이썬에서 데이터 시각화를 돕는 대표적인 오픈소스 패키지입니다. Bokeh의 가장 큰 특징은 HTML과 JavaScript를 이용해 그래프를 렌더링한다는 점으로, 덕분에 웹 기반 대시보드를 구현할 때 특히 유용합니다.
Bokeh는 데이터 소스를 JSON 파일로 변환하며, 이 파일은 자바스크립트 라이브러리인 BokehJS의 입력값으로 사용됩니다. BokehJS는 TypeScript로 작성되어 있어 최신 브라우저에서 시각화 결과를 원활하게 렌더링할 수 있습니다.
Matplotlib나 Seaborn이 정적(static) 그래프를 생성하는 것과 달리, Bokeh는 인터랙티브한 그래프를 만들어냅니다. 즉, 사용자가 그래프와 상호작용하면 그에 따라 그래프도 반응하여 변화합니다.
또한 생성된 그래프는 Flask나 Django 기반 웹 애플리케이션의 출력 결과로 삽입할 수 있으며, Jupyter 노트북에서도 바로 렌더링하여 확인할 수 있습니다.
Bokeh 설치 방법
Windows 명령 프롬프트에서 설치하는 경우:
pip3 install bokeh
Anaconda 프롬프트에서 설치하는 경우:
conda install bokeh
누적 막대 그래프 생성하기
Bokeh에서는 'vbar_stack' 또는 'hbar_stack' 함수를 사용하여 누적 막대 그래프(stacked bar chart)를 손쉽게 그릴 수 있습니다. 'vbar_stack'은 세로형, 'hbar_stack'은 가로형 누적 막대를 생성합니다.
예제 코드
from bokeh.plotting import figure, output_file, show
labs = ['label_1', 'label_2', 'label_3']
vals = ['val_1','val_2','val_3']
my_data = {'labs':labs,
'val_1':[2,5,11],
'val_2':[34,23,1],
'val_3':[25, 34, 23]
}
cols = ['red','cyan','navy']
fig = figure(x_range = labs, plot_width = 300, plot_height = 300)
fig.vbar_stack(vals, x = 'labs', source = my_data, color = cols,width = 0.5)
show(fig)
실행 결과

코드 설명
필요한 패키지들을 임포트하고 별칭(alias)을 지정합니다.
그래프의 너비와 높이를 지정하여 figure 함수를 호출합니다.
데이터는 리스트 형태로 정의됩니다.
'output_file' 함수를 호출하여 생성될 HTML 파일의 이름을 지정할 수 있습니다.
Bokeh에 내장된 'vbar_stack' 함수에 데이터를 전달하여 호출합니다.
'show' 함수를 사용하여 완성된 그래프를 화면에 표시합니다.
이처럼 Bokeh를 활용하면 몇 줄의 코드만으로도 웹 환경에서 동작하는 인터랙티브 누적 막대 그래프를 간편하게 구현할 수 있습니다.