[파이썬] bokeh 대화형 대시보드 만들기

Bokeh logo

Bokeh는 Python으로 데이터 시각화를 위한 강력한 도구이며, 대화형 대시보드를 만들기 위한 많은 기능을 제공합니다. 대시보드는 데이터를 시각적으로 보여주고 상호작용할 수 있는 인터페이스를 제공하는데 사용됩니다. 이 블로그 포스트에서는 Bokeh를 사용하여 대화형 대시보드를 만드는 방법을 알아보겠습니다.

Bokeh 설치하기

먼저, Bokeh를 설치해야 합니다. 다음 명령을 사용하여 Bokeh를 설치할 수 있습니다:

pip install bokeh

대화형 대시보드 예시

다음은 Bokeh를 사용하여 대화형 대시보드를 만드는 예시 코드입니다. 이 예시에서는 간단한 웹 어플리케이션을 만들어 사용자가 데이터를 필터링하고 차트를 상호작용적으로 조작할 수 있도록 합니다.

from bokeh.plotting import figure, curdoc
from bokeh.layouts import layout
from bokeh.models import ColumnDataSource, Select
from bokeh.io import show

# 데이터 생성
data = {
    'x': [1, 2, 3, 4, 5],
    'y': [6, 7, 2, 4, 5],
    'category': ['A', 'B', 'A', 'B', 'A']
}

# ColumnDataSource 생성
source = ColumnDataSource(data)

# 필터링을 위한 Select 위젯 생성
category_select = Select(title='Category', options=['All', 'A', 'B'], value='All')

# 새로운 데이터 생성 함수
def update_data():
    selected_category = category_select.value
    
    if selected_category == 'All':
        filtered_data = data
    else:
        filtered_data = {k: [v[i] for i in range(len(data['category'])) if data['category'][i] == selected_category] for k, v in data.items()}
    
    source.data = filtered_data

# 라인 차트 생성
p = figure(title='Interactive Dashboard Example', x_axis_label='X', y_axis_label='Y')
p.line('x', 'y', source=source)

# 필터링 위젯과 차트를 레이아웃에 추가
dashboard_layout = layout([[category_select], [p]])

# 필터링 이벤트 처리 함수 등록
category_select.on_change('value', lambda attr, old, new: update_data())

# 대시보드 실행
curdoc().add_root(dashboard_layout)
show(dashboard_layout)

실행하기

위의 예시 코드를 dashboard.py라는 파일로 저장한 후에 다음 명령을 실행하여 대시보드를 볼 수 있습니다:

bokeh serve --show dashboard.py

웹 브라우저에서 http://localhost:5006/dashboard로 접속하면 대시보드를 사용할 수 있습니다.

결론

Bokeh를 사용하면 Python으로 대화형 대시보드를 만들 수 있습니다. Bokeh의 다양한 기능을 사용하여 사용자가 데이터를 탐색하고 시각화할 수 있는 대시보드를 구축할 수 있습니다. 기능을 확장하고 사용자 정의를 추가하여 보다 복잡한 대시보드를 만들 수도 있습니다. Bokeh를 사용하여 데이터 시각화를 한 단계 더 발전시키고 효과적으로 데이터를 전달할 수 있습니다.