[파이썬] bokeh 그래프 내 데이터 선택 및 하이라이트

Bokeh는 Python 기반의 데이터 시각화 라이브러리로, 인터랙티브한 그래프를 생성하고 데이터를 선택하거나 하이라이트하는 기능을 제공합니다. 이 블로그 포스트에서는 Bokeh를 사용하여 그래프 내의 데이터를 선택하고 하이라이트하는 방법에 대해 알아보겠습니다.

데이터 선택하기

Bokeh에서는 그래프 내의 데이터를 선택하기 위해 HoverTool을 사용할 수 있습니다. 이를 사용하면 마우스를 그래프 위에 올리면 해당 데이터를 강조표시하거나 데이터에 대한 추가 정보를 표시할 수 있습니다.

from bokeh.plotting import figure, show
from bokeh.models import ColumnDataSource, HoverTool
from bokeh.sampledata.iris import data as iris_data

# 데이터 소스 생성
source = ColumnDataSource(data=iris_data)

# 그래프 생성
p = figure()
p.circle(x='petal_length', y='petal_width', source=source)

# HoverTool 추가
hover = HoverTool(tooltips=[('Species', '@species')])
p.add_tools(hover)

# 그래프 표시
show(p)

위의 예제에서는 HoverTool을 사용하여 ‘Species’ 열에 해당하는 값을 마우스 오버시에 툴팁으로 표시하도록 설정하였습니다. 마우스를 그래프의 데이터 포인트 위로 이동하면 해당 종에 대한 추가 정보가 표시됩니다.

데이터 하이라이트하기

Bokeh를 사용하면 데이터를 선택하고 하이라이트하는 기능을 구현할 수도 있습니다. 예를들어, 그래프의 특정 데이터 포인트를 강조하거나 선택한 데이터를 다른 색상으로 표시할 수 있습니다.

from bokeh.plotting import figure, show
from bokeh.models import ColumnDataSource, HoverTool
from bokeh.sampledata.iris import data as iris_data

# 데이터 소스 생성
source = ColumnDataSource(data=iris_data)

# 그래프 생성
p = figure()
p.circle(x='petal_length', y='petal_width', source=source, fill_alpha=0.5)

# 데이터 선택 및 하이라이트
selected_data = source.selected.indices
highlight_color = "red"

p.circle(x='petal_length', y='petal_width', source=source,
         selection_color=highlight_color, nonselection_fill_alpha=0.1,
         fill_alpha=0.5)

# HoverTool 추가
hover = HoverTool(tooltips=[('Species', '@species')])
p.add_tools(hover)

# 그래프 표시
show(p)

위의 예제에서는 ColumnDataSource를 사용하여 데이터 소스를 생성하고, selected.indices를 사용하여 선택된 데이터의 인덱스를 가져옵니다. 선택된 데이터는 selection_color로 지정한 색상으로 표시되고, 선택되지 않은 데이터는 nonselection_fill_alpha로 지정한 투명도를 가지며 표시됩니다.

이렇게 Bokeh를 사용하여 그래프 내의 데이터를 선택하고 하이라이트하는 기능을 구현할 수 있습니다. 데이터 시각화의 확장성과 인터랙티브한 기능은 Bokeh를 강력한 도구로 만듭니다. Bokeh의 다양한 기능을 활용하여 데이터 시각화를 더욱 효과적으로 구현해보세요.

참고: 이 예제 코드의 실행을 위해서는 Bokeh 라이브러리가 설치되어 있어야 합니다. Bokeh 설치 방법은 공식 문서를 참조해주세요.