Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python Bokeh로 마우스 오버 시 데이터가 표시되는 색상 산점도 만들기

Bokeh는 데이터 시각화를 위해 널리 사용되는 Python 패키지로, 오픈 소스 프로젝트입니다. Bokeh는 HTML과 JavaScript를 사용해 플롯을 렌더링하기 때문에 웹 기반 대시보드를 개발할 때 특히 유용합니다.

Bokeh는 NumPy, Pandas 등 다른 Python 패키지와 손쉽게 연동할 수 있으며, 이를 통해 인터랙티브 플롯이나 대시보드를 간편하게 제작할 수 있습니다.

Matplotlib이나 Seaborn이 정적인(static) 그래프를 생성하는 것과 달리, Bokeh는 사용자와 상호작용하는 동적 플롯을 만들어냅니다. 즉, 사용자가 그래프에 마우스를 올리거나 확대·축소하면 그래프가 그에 맞게 반응합니다. 이렇게 만든 플롯은 Flask나 Django 기반 웹 애플리케이션에 삽입할 수 있고, Jupyter Notebook에서도 바로 렌더링할 수 있습니다.

Bokeh 설치 및 의존성

Bokeh를 사용하기 위해 필요한 의존성 패키지는 다음과 같습니다.

Numpy
Pillow
Jinja2
Packaging
Pyyaml
Six
Tornado
Python-dateutil

Windows 명령 프롬프트에서 Bokeh를 설치하려면 아래 명령어를 실행합니다.

pip3 install bokeh

Anaconda 환경에서는 다음 명령어를 사용합니다.

conda install bokeh

예제: 마우스 오버 시 데이터를 표시하는 색상 산점도

아래 예제는 hover(마우스 오버) 도구를 포함한 다양한 도구를 활용하여, 5,000개의 무작위 데이터 포인트를 색상별로 표현하는 산점도를 생성합니다.

import numpy as np
from bokeh.plotting import figure, output_file, show

N = 5000
x = np.random.random(size=N) * 125
y = np.random.random(size=N) * 125
radii = np.random.random(size=N) * 1.35
colors = [
    "#%02x%02x%02x" % (int(r), int(g), 150) for r, g in zip(40+2*x, 30+2*y)
]

TOOLS="hover,crosshair,pan,wheel_zoom,zoom_in,zoom_out,box_zoom,undo,redo,reset,tap,save,box_select,poly_select,lasso_select,"
p = figure(tools=TOOLS)

p.scatter(x, y, radius=radii,
    fill_color=colors, fill_alpha=0.6,
    line_color=None)

output_file("colorscatter.html", title="Color scatter plot")
show(p)

실행 결과

Python Bokeh로 마우스 오버 시 데이터가 표시되는 색상 산점도 만들기

코드 설명

  • 필요한 패키지들을 가져와(import) 별칭(alias)을 지정합니다.

  • 'random' 함수를 사용해 x, y 좌표와 반지름 값으로 구성된 무작위 데이터를 생성합니다.

  • x, y 값에 따라 RGB 형식의 색상 리스트를 정의하여, 각 데이터 포인트에 서로 다른 색상을 적용합니다.

  • TOOLS 문자열에 'hover' 도구를 포함시켜, 마우스를 포인트 위에 올리면 해당 데이터 정보가 표시되도록 설정합니다.

  • 'figure' 함수를 호출해 플롯 객체를 생성하고, 'scatter' 함수에 데이터와 색상, 투명도 등을 전달하여 산점도를 그립니다.

  • 'output_file' 함수를 호출해 결과가 저장될 HTML 파일의 이름을 지정합니다.

  • 'show' 함수를 사용해 최종 플롯을 화면에 표시합니다.