우분투에서 Bokeh CLI 완벽 정복: 옵션별 데이터 시각화 실습 가이드

개요

Ubuntu 환경에서 파이썬 기반 데이터 시각화 도구인 Bokeh의 CLI 명령어 활용법을 알아봅니다. 정적 HTML 및 JSON 파일 변환부터 대화형 웹 대시보드 서버 구동까지 주요 옵션별 실행 방법을 실습과 함께 정리합니다.

1. Bokeh 설치 및 환경 설정 확인 (bokeh info)

bokeh 실습 진행을 위해 패키지 목록을 갱신하고 관련 패키지 설치를 시도합니다.

sudo apt-get update -qq && sudo apt-get install -y python3-pip python3-bokeh

bokeh info 명령어는 시스템에 설치된 Bokeh 버전과 Python 버전, 백엔드 구성 등 환경 정보를 출력합니다.
⚙️ [주요 옵션]

info : 설치된 Bokeh 버전, 종속성 패키지, 환경 변수 등 시스템 구성 정보를 출력합니다.
serve : 대화형 데이터 시각화 웹 애플리케이션을 호스팅하는 Bokeh 서버를 실행합니다.
html : Bokeh 시각화 코드를 단독 실행 가능한 정적 HTML 문서로 생성합니다.
json : 시각화 객체 및 플롯 데이터를 직렬화된 JSON 형식으로 변환하여 출력합니다.
secret : Bokeh 서버 세션 보안에 필요한 비밀 키(secret key)를 생성합니다.

bokeh info

2. 시각화 코드를 독립형 HTML 문서로 변환 (bokeh html)

Bokeh 시각화 실습을 위한 작업 디렉터리를 생성하고 해당 위치로 이동하기 위해 mkdir -p ~/bokeh-demo && cd ~/bokeh-demo 명령어를 실행합니다.

mkdir -p ~/bokeh-demo && cd ~/bokeh-demo

독립형 HTML 변환 테스트에 사용할 산점도(Scatter plot) 차트 생성 스크립트인 plot_sample.py 파일을 작성합니다.

cat « ‘EOF’ > plot_sample.py
from bokeh.plotting import figure, save
p = figure(title=“Sample Plot”, width=600, height=400)
p.circle([1, 2, 3, 4], [2, 5, 8, 3], size=10, color=“navy”, alpha=0.5)
EOF

bokeh html plot_sample.py 명령어는 작성된 파이썬 시각화 스크립트를 웹 브라우저에서 단독 실행할 수 있는 정적 HTML 파일로 변환하여 생성합니다.

bokeh html plot_sample.py

생성된 plot_sample.html 파일의 존재 여부와 파일 크기 등 상세 정보를 확인하기 위해 ls -lh plot_sample.html 명령어를 실행합니다.

ls -lh plot_sample.html

3. 차트 레이아웃 및 데이터를 JSON 형식으로 추출 (bokeh json)

bokeh json plot_sample.py > plot_output.json 명령어는 시각화 스크립트의 플롯 구성 객체와 데이터 속성을 직렬화된 JSON 형식으로 변환하여 파일로 저장합니다.
외부 웹 애플리케이션이나 다른 프론트엔드 라이브러리(BokehJS 등)와의 데이터 연동에 활용할 수 있습니다.

bokeh json plot_sample.py > plot_output.json

생성된 JSON 데이터의 구조와 직렬화된 스키마를 확인하기 위해 head -n 20 plot_output.json 명령어로 파일 상단 20줄을 출력합니다.
차트의 루트 모델 ID, 렌더러 정보, 데이터 소스 등의 메타데이터가 올바르게 기록되었는지 점검할 수 있습니다.

head -n 20 plot_output.json

4. 실시간 대화형 대시보드 서버 실행 (bokeh serve)

Bokeh 웹 애플리케이션 서버 호스팅 실습에 사용할 대화형 차트 스크립트인 server_app.py 파일을 작성합니다.
curdoc().add_root()를 통해 현재 세션 문서에 꺾은선형 플롯 객체를 루트로 등록합니다.

cat « ‘EOF’ > server_app.py
from bokeh.plotting import figure, curdoc
p = figure(title=“Live App”)
p.line([1, 2, 3], [1, 4, 9])
curdoc().add_root(p)
EOF

timeout 5s bokeh serve server_app.py --port 5006 --allow-websocket-origin="*" 명령어는 작성한 파이썬 스크립트를 웹 애플리케이션으로 구동하는 Bokeh 서버를 실행합니다.
--port 5006 옵션으로 수신 포트를 지정하고, --allow-websocket-origin="*" 옵션을 통해 외부 접속에 필요한 웹소켓(WebSocket) 접근 권한을 허용합니다.

timeout 5s bokeh serve server_app.py –port 5006 –allow-websocket-origin="*" || true

지금까지 우분투 환경에서 Bokeh CLI의 주요 옵션을 활용해 데이터를 시각화하는 방법을 간단하게 살펴보았습니다.
다양한 옵션을 직접 조합해 보며 여러분만의 인터랙티브한 웹 대시보드와 차트를 손쉽게 구축해 보시기 바랍니다.