[파이썬] bokeh 커스텀 위젯 개발하기

Bokeh는 파이썬 기반의 데이터 시각화 라이브러리로, 인터랙티브한 웹 기반 시각화를 할 수 있는 기능을 제공합니다. Bokeh는 다양한 종류의 표준 위젯들을 포함하고 있지만, 때때로 사용자 정의 컨트롤이 필요할 때가 있습니다. 이런 경우 Bokeh에서 제공하는 커스텀 위젯 개발 기능을 사용할 수 있습니다. 이번 포스트에서는 Bokeh를 사용하여 커스텀 위젯을 개발하는 방법을 알아보겠습니다.

커스텀 위젯 기본 구조

Bokeh에서 제공하는 커스텀 위젯은 CustomJS 클래스를 이용하여 JavaScript 코드를 작성하는 방식으로 동작합니다. 커스텀 위젯은 크게 두 가지 요소로 구성됩니다:

  1. 모델 정의 (Model Definition): 위젯 기능을 정의하는 Bokeh 모델 클래스를 작성합니다. 보통 bokeh.models 모듈에서 제공하는 기본 모델 클래스를 상속하여 사용합니다.
  2. 콜백 함수 (Callback Function): 위젯 이벤트에 대한 처리 로직을 정의하는 콜백 함수를 작성합니다. 이 함수는 JavaScript 코드로 작성되며, Bokeh의 CustomJS 클래스의 인스턴스로 생성됩니다.

아래는 간단한 커스텀 슬라이더 위젯의 예시 코드입니다:

from bokeh.models import Slider, CustomJS
from bokeh.layouts import column
from bokeh.plotting import figure, show

# 모델 정의
slider = Slider(start=0, end=10, value=5, step=1, title="Value")

# 콜백 함수 정의
callback = CustomJS(args=dict(slider=slider), code="""
    console.log('Slider Value:', slider.value)
""")

# 슬라이더에 콜백 함수 등록
slider.js_on_change('value', callback)

# 위젯과 플롯을 레이아웃에 추가
layout = column(slider)

# 결과 출력
show(layout)

위의 예시 코드에서 Slider 클래스는 Bokeh 내장 슬라이더 위젯을 나타내며, CustomJS 클래스를 이용하여 JavaScript 코드를 작성한 콜백 함수를 정의합니다. 이 콜백 함수는 슬라이더 값이 변경될 때마다 호출되며, 콘솔에 현재 슬라이더 값이 출력됩니다.

위의 예시 코드를 실행하면 웹 기반의 인터랙티브 슬라이더 위젯이 생성되며, 슬라이더 값을 변경할 때마다 콘솔에 해당 값이 출력됩니다.

커스텀 위젯 개발 시 주의사항

결론

Bokeh의 커스텀 위젯 개발 기능을 이용하여 인터랙티브한 시각화 인터페이스를 구현할 수 있습니다. 커스텀 위젯은 Bokeh의 다른 표준 위젯과 함께 사용하여 웹 기반의 다양하고 동적인 시각화를 구현할 수 있습니다. Bokeh의 다양한 기능과 커스텀 위젯의 개발 방법을 익혀두면 데이터 시각화 작업에 많은 도움이 될 것입니다.