[파이썬] bokeh 라이브 데이터 피드와의 연동

Bokeh은 파이썬 기반의 데이터 시각화 라이브러리로서, 웹 기반의 인터랙티브한 차트와 그래프를 생성할 수 있습니다. Bokeh에서는 정적인 데이터 뿐만 아니라, 실시간으로 업데이트되는 라이브 데이터를 시각화할 수 있는 기능도 제공합니다. 이번 포스트에서는 Bokeh를 사용하여 라이브 데이터 피드와의 연동 방법에 대해 알아보겠습니다.

데이터 피드의 이해

먼저, 데이터 피드란 실시간으로 변하는 데이터를 제공하는 인터페이스를 의미합니다. 데이터 피드는 주로 센서 데이터, 주가 정보, 기상 정보 등과 같은 실시간 데이터를 읽거나 생성하여 제공할 수 있습니다. 이러한 데이터를 Bokeh를 통해 시각화하면, 실시간으로 변하는 데이터의 변화를 쉽게 관찰할 수 있습니다.

Bokeh에서 라이브 데이터 피드 사용하기

Bokeh에서 라이브 데이터를 사용하기 위해서는 bokeh.models.sources 모듈의 ColumnDataSource 클래스를 사용합니다. 이 클래스는 실시간으로 업데이트되는 데이터를 관리하고, Bokeh 차트나 그래프에 데이터를 제공하는 역할을 합니다.

아래는 Bokeh를 사용하여 라이브 데이터를 시각화하는 예제 코드입니다.

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

# 데이터 피드 생성
source = ColumnDataSource(data={'x': [], 'y': []})

# Bokeh Figure 생성
fig = figure(width=400, height=300)
fig.line(x='x', y='y', source=source)

# 라이브 데이터 업데이트 함수 정의
def update():
    # 데이터 피드 업데이트
    new_x = ...  # 새로운 x 값 생성
    new_y = ...  # 새로운 y 값 생성
    source.stream({'x': [new_x], 'y': [new_y]})

# Bokeh 앱 실행
curdoc().add_root(fig)
curdoc().add_periodic_callback(update, 1000)  # 1초마다 데이터 업데이트

위 예제 코드에서는 데이터 피드를 생성하기 위해 ColumnDataSource 객체를 활용하였습니다. 이후 데이터 업데이트 함수인 update() 함수를 정의하고, 데이터 피드를 업데이트한 후 stream() 메서드를 사용하여 데이터를 추가합니다. 마지막으로 Bokeh 앱을 실행하기 위해 curdoc().add_root() 함수를 호출하고, 데이터 업데이트를 주기적으로 실행하기 위해 curdoc().add_periodic_callback() 함수를 사용합니다.

마치며

Bokeh를 활용하여 라이브 데이터 피드와의 연동을 구현하는 방법에 대해 알아보았습니다. 이를 통해 보다 동적이고 실시간으로 변화하는 데이터에 대한 시각화를 구현할 수 있으며, 실시간 데이터의 변화를 간편하게 관찰할 수 있습니다. Bokeh의 다양한 기능과 속성을 활용하여 데이터 시각화를 보다 효과적으로 수행할 수 있습니다.