[파이썬] bokeh 데이터 스트리밍 및 동적 업데이트

Bokeh는 파이썬 기반의 데이터 시각화 라이브러리로, 동적인 데이터를 시각화하고 인터랙티브한 그래프를 생성하는 데 사용됩니다. Bokeh는 데이터 스트리밍 및 동적 업데이트를 지원하여 실시간으로 변하는 데이터에 대한 시각화를 수행할 수 있습니다.

Bokeh 개요

Bokeh는 웹 브라우저에서 동작하는 인터랙티브한 그래프를 생성하는 도구입니다. 이를 통해 사용자는 웹 기반의 대화형 시각화를 구현할 수 있습니다. Bokeh는 직관적인 인터페이스와 다양한 시각화 기능을 제공하여 데이터 분석가와 개발자에게 다양한 옵션을 제공합니다.

데이터 스트리밍

Bokeh는 웹 브라우저에서 데이터의 동적 업데이트를 지원하기 위해 데이터 스트리밍 기능을 제공합니다. 데이터 스트리밍을 사용하면 데이터 소스에 실시간으로 업데이트된 새로운 데이터를 전송할 수 있습니다.

다음은 Bokeh에서 데이터 스트리밍을 구현하는 예제 코드입니다. ColumnDataSource 객체를 사용하여 데이터를 만들고, stream 메서드를 사용하여 실시간으로 새로운 데이터를 전송합니다.

from bokeh.plotting import figure, curdoc
from bokeh.models import ColumnDataSource
from random import random

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

# 그래프 생성
p = figure(plot_width=400, plot_height=400)
p.circle(x='x', y='y', source=source, size=10, color='navy')

# 데이터 스트리밍 콜백 함수
def update():
    new_data = dict(x=[random()], y=[random()])
    source.stream(new_data, rollover=100)

# 동적 업데이트 설정
curdoc().add_periodic_callback(update, 1000)  # 1초마다 업데이트

# 시각화
curdoc().add_root(p)

위 코드에서는 update 함수를 사용하여 1초마다 새로운 데이터를 생성하고, stream 메서드를 사용하여 그래프에 전달합니다. rollover 매개변수를 사용하여 최근 100개의 데이터만 보여줍니다.

인터랙티브 그래프

Bokeh를 사용하여 생성한 그래프는 웹 브라우저에서 인터랙티브하게 동작합니다. 사용자는 그래프를 확대, 축소하거나 툴팁을 통해 데이터를 확인할 수 있습니다.

아래 코드는 Bokeh를 사용하여 인터랙티브한 그래프를 생성하는 예제입니다. hover 도구를 추가하여 마우스 오버시 데이터 값을 확인할 수 있습니다.

from bokeh.plotting import figure, show
from bokeh.models import HoverTool

# 데이터 생성
x = [1, 2, 3, 4, 5]
y = [5, 4, 3, 2, 1]

# 그래프 생성
p = figure(plot_width=400, plot_height=400, tooltips=[("x", "$x"), ("y", "$y")])
p.line(x, y)

# hover 도구 추가
p.add_tools(HoverTool())

# 시각화
show(p)

위의 코드에서는 HoverTool을 사용하여 툴팁을 추가했습니다. 마우스를 그래프 위로 올리면 x와 y의 값을 확인할 수 있습니다.

Bokeh는 데이터 스트리밍과 인터랙티브 그래프를 통해 실시간으로 변하는 데이터의 시각화를 쉽게 구현할 수 있습니다. 이를 통해 동적인 데이터에 대한 실시간 분석 및 시각화를 수행할 수 있습니다.