데이터 시각화를 위한 강력한 오픈소스 라이브러리인 Bokeh를 사용하면 Python에서 인터랙티브한 산점도(scatter plot)를 손쉽게 만들 수 있습니다. 이 글에서는 Bokeh의 특징, 설치 방법, 그리고 실제 산점도 생성 예제까지 단계별로 살펴보겠습니다.
Bokeh란 무엇인가?
Bokeh는 데이터 시각화를 돕는 Python 패키지로, 오픈소스 프로젝트로 공개되어 있습니다. 가장 큰 특징은 HTML과 JavaScript를 사용해 플롯을 렌더링한다는 점입니다. 덕분에 웹 기반 대시보드를 개발할 때 특히 유용하게 활용할 수 있습니다.
Bokeh의 동작 원리는 다음과 같습니다. 먼저 데이터 소스를 JSON 파일로 변환한 후, 이 파일을 BokehJS라는 JavaScript 라이브러리의 입력으로 전달합니다. BokehJS는 TypeScript로 작성되어 있으며, 최신 웹 브라우저에서 시각화 결과를 렌더링하는 역할을 담당합니다.
Matplotlib와 Bokeh의 차이점
익숙한 Matplotlib나 Seaborn이 정적(static) 플롯을 생성하는 반면, Bokeh는 인터랙티브(interactive) 플롯을 생성합니다. 즉, 사용자가 마우스로 확대하거나 축소하고, 데이터에 호버(hover)하는 등 상호작용하면 플롯이 그에 맞게 동적으로 반응합니다.
또한 Bokeh로 만든 플롯은 다음과 같은 환경에 손쉽게 통합할 수 있습니다.
- Flask 또는 Django 기반 웹 애플리케이션의 출력물로 임베딩
- Jupyter Notebook에서 직접 렌더링하여 확인
Bokeh 설치하기
필수 의존성 패키지
Bokeh를 설치하면 아래 의존성 패키지들이 함께 설치됩니다.
Numpy
Pillow
Jinja2
Packaging
Pyyaml
Six
Tornado
Python-dateutil
Windows 명령 프롬프트에서 설치
pip3 install bokeh
Anaconda 프롬프트에서 설치
conda install bokeh
산점도 생성 예제 코드
이제 Bokeh를 사용해 간단한 산점도를 만들어 보겠습니다.
from bokeh.plotting import figure, output_file, show
fig = figure(plot_width=500, plot_height=400)
fig.scatter([1, 3, 7, 5, 4, 9], [6, 5, 9, 8, 0, 1],
marker="circle", size=20, fill_color="grey")
output_file('scatterplot.html')
show(fig)
위 코드를 실행하면 회색 원형 마커로 표현된 산점도가 'scatterplot.html' 파일로 저장되고, 기본 브라우저에서 자동으로 열립니다.
코드 상세 설명
- 패키지 임포트: 필요한 모듈인
figure,output_file,show를bokeh.plotting에서 가져옵니다. - figure 함수 호출: 플롯의 너비(
plot_width)와 높이(plot_height)를 지정하여 figure 객체를 생성합니다. - output_file 함수 호출: 생성될 HTML 파일의 이름을 지정합니다. 여기서는 'scatterplot.html'로 설정했습니다.
- scatter 함수 호출: Bokeh의
scatter메서드에 x축 좌표와 y축 좌표 데이터를 전달하고, 마커 형태(circle), 크기(20), 채우기 색상(grey)을 지정합니다. - show 함수 호출: 완성된 플롯을 브라우저에 표시합니다.
마무리
Bokeh는 몇 줄의 코드만으로 웹 친화적인 인터랙티브 산점도를 만들 수 있는 강력한 시각화 도구입니다. 정적 차트를 넘어 사용자와 상호작용하는 대시보드를 구축하고 싶다면, Bokeh를 적극적으로 활용해 보시기 바랍니다.