[파이썬] bokeh 사용자 입력과 통합

Bokeh는 파이썬에서 데이터 시각화를 위한 강력한 도구입니다. Bokeh를 사용하면 인터랙티브한 시각화를 생성하고 사용자의 입력과 통합하여 반응형 인터페이스를 구축할 수 있습니다. 이 글에서는 Bokeh를 사용하여 사용자 입력과 통합하는 방법을 알아보겠습니다.

Bokeh에서 사용자 입력 받기

Bokeh에서 사용자 입력을 받으려면 bokeh.models 모듈의 다양한 클래스들을 사용할 수 있습니다. 가장 기본적인 사용자 입력 요소는 bokeh.models.TextInput 입니다. 이 클래스를 사용하면 텍스트 입력을 받을 수 있습니다. 아래는 간단한 예제입니다.

from bokeh.io import curdoc
from bokeh.layouts import column
from bokeh.models import TextInput

# 텍스트 입력 요소 생성
text_input = TextInput(placeholder="이름을 입력하세요")

# 텍스트 입력 요소의 값을 출력하는 콜백 함수
def print_input_value(attr, old, new):
    print("사용자 입력:", new)

# 텍스트 입력 요소와 콜백 함수를 레이아웃에 추가
layout = column(text_input)
text_input.on_change("value", print_input_value)

# 문서에 레이아웃 추가
curdoc().add_root(layout)

위의 코드는 입력된 텍스트를 콘솔에 출력하는 간단한 예제입니다. TextInput 객체를 생성하고, 콜백 함수를 정의하여 입력 값이 변경될 때마다 실행되도록 설정합니다.

Bokeh과 사용자 입력 통합하기

Bokeh에서 사용자 입력을 통합하려면 입력 값을 다른 요소들과 연결시켜야 합니다. 가장 흔한 방법은 입력 값에 따라 그래프나 도표를 업데이트하는 것입니다. 아래는 간단한 예제입니다.

from random import random
from bokeh.io import curdoc
from bokeh.layouts import column
from bokeh.models import Slider, ColumnDataSource
from bokeh.plotting import figure

# 데이터 소스 생성
source = ColumnDataSource(data=dict(x=[], y=[]))

# 그래프 생성
plot = figure(height=300, width=500)
plot.line(x='x', y='y', source=source, line_width=2)

# 슬라이더 생성
slider = Slider(start=0, end=10, value=5, step=0.1, title="값")

# 그래프와 슬라이더를 연결하는 콜백 함수
def update_plot(attr, old, new):
    x = [i * 0.1 for i in range(int(slider.value) + 1)]
    y = [random() for _ in range(len(x))]

    source.data = dict(x=x, y=y)

# 슬라이더의 값을 변경할 때마다 실행되는 콜백 함수 연결
slider.on_change("value", update_plot)

# 레이아웃에 그래프와 슬라이더 추가
layout = column(plot, slider)

# 문서에 레이아웃 추가
curdoc().add_root(layout)

위의 코드는 슬라이더 값을 변경할 때마다 그래프가 업데이트되는 간단한 예제입니다. Slider 객체를 생성하고 콜백 함수를 정의하여 슬라이더 값이 변경될 때마다 그래프가 업데이트되도록 합니다. ColumnDataSource 클래스를 사용하여 데이터를 저장하고 그래프와 연결합니다.

Bokeh에서는 다양한 입력 요소를 제공하고, 사용자 입력을 다른 요소와 연결하는 다양한 방법이 있습니다. 이를 활용하여 보다 유연하고 사용자 친화적인 인터페이스를 구축할 수 있습니다. Bokeh의 공식 문서와 예제들을 참고하면 더 다양한 기능을 사용할 수 있습니다.