Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python Bokeh 완벽 가이드: 웹 브라우저 기반 인터랙티브 데이터 시각화

Bokeh란 무엇인가?

Bokeh는 웹 브라우저에서 동작하도록 설계된 파이썬 데이터 시각화 라이브러리입니다. 우아하고 간결한 문법으로 다양한 그래픽을 구성할 수 있으며, 인터랙티브 플롯·대시보드·데이터 애플리케이션을 빠르고 쉽게 개발할 수 있다는 것이 가장 큰 장점입니다.

Bokeh를 사용하면 D3.js 같은 자바스크립트 시각화 라이브러리의 강력한 기능을 파이썬 코드만으로 활용할 수 있습니다. 생성된 차트는 별도의 프런트엔드 작업 없이 HTML 파일, Jupyter Notebook 또는 웹 서버에서 바로 확인할 수 있습니다.

Bokeh 설치하기

pip 명령어 한 줄로 간단히 설치할 수 있습니다.

pip install bokeh

선 그래프 그리기

line() 메서드에 점들의 x 좌표와 y 좌표를 각각 리스트 형태로 전달하면 선 그래프를 그릴 수 있습니다. figure() 함수에서 그래프의 너비와 높이를 지정하면 결과가 브라우저에 바로 표시되며, 선 두께(line_width)나 색상(color) 같은 옵션도 함께 지정할 수 있습니다.

참고로 Bokeh 3.x 버전부터는 plot_width, plot_height 대신 width, height 매개변수를 사용하는 것이 권장됩니다.

예제

from bokeh.io import show
from bokeh.plotting import figure

p = figure(plot_width=300, plot_height=300)

# 선 렌더러 추가
p.line([2, 1, 2, 4], [1, 3, 5, 4],
       line_width=2, color="blue")

# 결과 표시
show(p)

실행 결과

위 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.

Python Bokeh 완벽 가이드: 웹 브라우저 기반 인터랙티브 데이터 시각화

원 그래프 그리기

circle() 메서드를 사용하면 산점도 형태의 원 그래프를 그릴 수 있습니다. 원 중심의 x, y 좌표를 리스트로 전달하고, size(크기), color(색상), alpha(투명도) 매개변수로 원의 스타일을 자유롭게 조절할 수 있습니다.

예제

from bokeh.io import show
from bokeh.plotting import figure

p = figure(plot_width=400, plot_height=300)

# 원 렌더러 추가
p.circle([2, 1.5, 2, 3, 2.4], [2, 3, 4, 4, 3],
         size=10, color="red", alpha=0.8)

# 결과 표시
show(p)

실행 결과

위 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.

Python Bokeh 완벽 가이드: 웹 브라우저 기반 인터랙티브 데이터 시각화

막대그래프 그리기

막대그래프는 vbar() 메서드로 그립니다. 아래 예제에서는 요일 이름 목록을 x_range(카테고리 축)로 설정하고, 각 막대의 높이 값은 top 매개변수에 리스트로 전달합니다. 실제 프로젝트에서는 CSV 파일이나 API로부터 외부 데이터를 불러와 이 매개변수에 전달하는 방식으로 확장할 수 있습니다.

코드 마지막 부분의 p.xgrid.grid_line_color = None은 세로 격자선을 제거하고, p.y_range.start = 0은 y축이 0부터 시작하도록 설정해 그래프를 보기 좋게 다듬는 역할을 합니다.

예제

from bokeh.io import show
from bokeh.plotting import figure

sales_qty = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri']

# 위 카테고리 목록을 x_range로 지정
p = figure(x_range=sales_qty, plot_height=250, title="Sales Figures")

# 범주형 값도 좌표로 사용할 수 있습니다
p.vbar(x=sales_qty, top=[6, 3, 4, 2, 4], width=0.4)

# 그래프를 보기 좋게 속성 조정
p.xgrid.grid_line_color = None
p.y_range.start = 0

show(p)

실행 결과

위 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.

Python Bokeh 완벽 가이드: 웹 브라우저 기반 인터랙티브 데이터 시각화

마무리

지금까지 Bokeh를 사용해 선 그래프, 원 그래프, 막대그래프라는 세 가지 기본 차트를 그려 보았습니다. Bokeh는 여기서 소개한 기능 외에도 호버 툴팁, 줌·패닝, 슬라이더·버튼 같은 위젯, Bokeh Server를 통한 실시간 업데이트 등 훨씬 다양한 인터랙티브 기능을 제공합니다. 기본 그래프에 익숙해졌다면 공식 문서의 갤러리를 참고해 대시보드 수준의 데이터 애플리케이션으로 확장해 보시기 바랍니다.