[파이썬] bokeh 웹 기반 플랫폼과의 통합 방법

Bokeh은 파이썬 기반의 데이터 시각화 라이브러리로, 다양한 플로팅 기능과 상호작용이 가능한 웹 기반 인터페이스로 제공됩니다. Bokeh를 사용하여 생성한 차트와 그래프를 웹 기반 플랫폼에 통합하는 방법을 알아보겠습니다.

1. Bokeh 서버를 활용한 통합

Bokeh는 자체적으로 서버 기능을 제공하여 인터랙티브한 시각화를 더욱 효과적으로 제공할 수 있습니다. Bokeh 서버를 통해 생성한 차트를 웹서버에 호스팅하여 다른 사용자들과 공유할 수 있습니다. 아래는 Bokeh 서버를 통해 차트를 웹에 표시하는 예제입니다.

from bokeh.plotting import figure
from bokeh.io import curdoc

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

# 차트 생성
p = figure(title="Bokeh 웹 통합", x_axis_label='x', y_axis_label='y')
p.line(x, y, legend_label="Line", line_width=2)

# Bokeh 서버에 차트 추가
curdoc().add_root(p)

위 코드를 실행하면 Bokeh 서버가 실행되고, http://localhost:5006 주소로 접속하면 차트가 표시됩니다. 이렇게 생성한 Bokeh 서버를 웹 기반 플랫폼에서 사용하면, 다른 사용자들과 실시간으로 차트를 공유할 수 있습니다.

2. Bokeh 출력을 HTML로 내보내기

Bokeh는 시각화 결과를 HTML 형식으로 내보내는 기능을 제공합니다. 이를 활용하여 Bokeh로 생성한 차트를 웹 페이지에 통합하는 방법도 있습니다. 아래는 Bokeh를 사용하여 차트를 HTML로 변환하는 코드입니다.

from bokeh.plotting import figure
from bokeh.embed import file_html
from bokeh.resources import CDN

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

# 차트 생성
p = figure(title="Bokeh 웹 통합", x_axis_label='x', y_axis_label='y')
p.line(x, y, legend_label="Line", line_width=2)

# Bokeh 차트를 HTML로 전환
html = file_html(p, CDN, "Bokeh 웹 통합")

# HTML 파일로 저장 또는 웹 페이지에 삽입하여 통합
with open("bokeh_integration.html", "w") as f:
    f.write(html)

위 코드를 실행하면 bokeh_integration.html 파일에 Bokeh로 생성한 차트가 HTML 형식으로 저장됩니다. 이 파일을 웹 페이지에 삽입하거나 웹 기반 플랫폼에 업로드하여 Bokeh 차트를 통합할 수 있습니다.

3. Bokeh와 웹 프레임워크 통합

Bokeh와 함께 사용되는 웹 프레임워크인 Flask, Django, Dash 등을 활용하여 Bokeh 시각화를 웹 애플리케이션에 통합할 수도 있습니다. 이러한 웹 프레임워크를 사용하면 Bokeh 차트를 웹 애플리케이션의 일부로 포함할 수 있어 사용자와의 상호작용이나 다른 기능들을 손쉽게 추가할 수 있습니다.

예를 들어, Flask와 Bokeh를 함께 사용하여 웹 애플리케이션을 개발하는 예제 코드는 다음과 같습니다.

from flask import Flask, render_template
from bokeh.plotting import figure
from bokeh.embed import components

app = Flask(__name__)

@app.route('/')
def index():
    # 데이터 생성
    x = [1, 2, 3, 4, 5]
    y = [6, 7, 2, 4, 5]

    # 차트 생성
    p = figure(title="Bokeh 웹 통합", x_axis_label='x', y_axis_label='y')
    p.line(x, y, legend_label="Line", line_width=2)

    # Bokeh 차트를 HTML로 전환하여 Flask에 렌더링
    script, div = components(p)
    return render_template('index.html', script=script, div=div)

if __name__ == '__main__':
    app.run()

위 코드는 Flask를 사용하여 Bokeh 차트를 웹 페이지에 통합하는 예제입니다. index.html은 Flask의 템플릿 엔진을 사용하여 Bokeh 차트를 표시할 수 있도록 처리되어야 합니다.

마치며

Bokeh를 웹 기반 플랫폼과 통합하는 방법에 대해 알아보았습니다. Bokeh 서버를 활용하거나, Bokeh 출력을 HTML로 내보내거나, 커스텀 웹 애플리케이션을 개발하는 등 다양한 방법을 사용하여 Bokeh 시각화를 웹에 통합할 수 있습니다. 이를 통해 보다 동적이고 상호작용적인 데이터 시각화를 웹에서 제공할 수 있습니다.