[파이썬] bokeh 커스텀 데이터 모델 및 연결 방법

Bokeh는 데이터 시각화를 위한 강력한 Python 라이브러리입니다. 이 라이브러리를 사용하면 인터랙티브한 시각화를 구현할 수 있으며, 여러 종류의 데이터를 시각적으로 보여줄 수 있습니다. Bokeh는 이미 다양한 데이터 모델과 연결 방법을 제공하고 있지만, 때로는 사용자 고유의 데이터 모델을 만들어야 할 때도 있습니다. 이번 글에서는 Bokeh에서 커스텀 데이터 모델을 만들고 연결하는 방법에 대해 알아보겠습니다.

Bokeh 커스텀 데이터 모델 만들기

Bokeh에서는 ColumnDataSource라는 데이터 모델을 사용하여 데이터를 관리합니다. ColumnDataSource는 일련의 데이터를 컬럼 형태로 관리하며, 여러 개의 컬럼을 가질 수 있습니다. 이전에 만들어진 커스텀 데이터 모델을 Bokeh에 연결하려면 해당 모델을 ColumnDataSource에 포함시켜야 합니다.

예를 들어, 사용자가 별도의 데이터 클래스를 만들어서 Bokeh에서 사용하고자 한다면 다음과 같이 할 수 있습니다:

class MyDataModel:
    def __init__(self, data):
        self.data = data
    
    def get_data(self):
        return self.data

# 커스텀 데이터 모델 생성
data_model = MyDataModel(data=[1, 2, 3, 4, 5])

커스텀 데이터 모델을 Bokeh에 연결하기

커스텀 데이터 모델을 Bokeh에 연결하기 위해서는 ColumnDataSource에 해당 데이터 모델의 필요한 컬럼들을 포함시켜야 합니다. 여기서는 MyDataModel에서 data라는 컬럼만 사용할 것입니다.

from bokeh.models import ColumnDataSource

# 커스텀 데이터 모델을 Bokeh의 ColumnDataSource에 연결
source = ColumnDataSource(data={
    'x': data_model.get_data(),
    'y': [4, 2, 1, 7, 5]
})

위의 예시에서는 x컬럼에 MyDataModel에서 가져온 데이터를, y컬럼에는 임의의 데이터를 설정했습니다.

Bokeh 플롯에 커스텀 데이터 모델 사용하기

이제 ColumnDataSource에 연결된 커스텀 데이터 모델을 사용하여 Bokeh 플롯을 만들어보겠습니다.

from bokeh.plotting import figure, show

# Bokeh 플롯 생성
p = figure()
p.line(x='x', y='y', source=source)

# 플롯 보여주기
show(p)

위의 예시에서는 line 메소드를 사용하여 xy 컬럼을 연결해줍니다. source 인자에는 위에서 생성한 ColumnDataSource 객체를 전달합니다.

이제 Bokeh 플롯에서는 MyDataModel에서 가져온 데이터와 함께 임의의 데이터를 시각화할 수 있습니다.

결론

이번 글에서는 Bokeh에서 커스텀 데이터 모델을 만들고 연결하는 방법에 대해 알아보았습니다. Bokeh는 다양한 데이터 모델을 지원하며 이를 활용하여 데이터 시각화를 할 수 있습니다. 하지만 사용자가 고유의 데이터 모델을 만들어야 하는 경우에는 ColumnDataSource를 사용하여 커스텀 데이터 모델을 Bokeh에 연결할 수 있습니다. 이를 통해 더 다양한 시각화를 구현할 수 있습니다.