[파이썬] bokeh 범례 및 주석 추가하기

Bokeh(보케)는 파이썬을 기반으로 한 인터랙티브 시각화 라이브러리로, 다양한 그래프 및 차트를 생성할 수 있습니다. 이번 포스트에서는 Bokeh를 사용하여 그래프의 범례와 주석을 추가하는 방법을 알아보겠습니다.

1. 범례 추가하기

Bokeh에서 범례를 추가하는 가장 간단한 방법은 각 그래프에 legend 인수를 설정하는 것입니다. 이 인수에 해당 그래프의 범례 이름을 지정하면 그래프에 범례가 표시됩니다.

from bokeh.plotting import figure, show

# 샘플 데이터 생성
x = [1, 2, 3, 4, 5]
y1 = [2, 4, 6, 8, 10]
y2 = [1, 3, 5, 7, 9]

# figure 객체 생성
p = figure()

# 그래프 그리기
p.line(x, y1, legend_label="Graph 1")
p.line(x, y2, legend_label="Graph 2")

# 범례 표시
p.legend.click_policy = "hide" # 범례를 클릭하면 해당 그래프가 숨겨지도록 설정

show(p)

이 코드를 실행하면 Graph 1, Graph 2라는 범례가 그래프에 표시됩니다. legend_label 인수를 사용하여 각 그래프의 범례 이름을 지정하고, p.legend.click_policy를 사용하여 범례를 클릭하면 그래프가 숨겨지도록 설정할 수 있습니다.

2. 주석 추가하기

Bokeh를 사용하여 그래프에 주석을 추가하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 Label 또는 LabelSet 객체를 사용하는 것입니다. Label 객체는 특정 좌표에 텍스트 레이블을 추가하는 데 사용되고, LabelSet 객체는 여러 좌표에 텍스트 레이블을 한 번에 추가하는 데 사용됩니다.

from bokeh.models import Label, LabelSet
from bokeh.plotting import figure, show

# 샘플 데이터 생성
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]

# figure 객체 생성
p = figure()

# 그래프 그리기
p.line(x, y)

# 주석 추가
label = Label(x=2, y=7, text='Important Point', text_font_size='10pt', 
              background_fill_color='white')
p.add_layout(label)

# 여러 개의 주석 추가 (LabelSet 사용)
labels = LabelSet(x=[3, 4], y=[5, 9], text=['Label 1', 'Label 2'], 
                  text_font_size='10pt', background_fill_color='white')
p.add_layout(labels)

show(p)

위의 코드에서는 Label 객체를 사용하여 (2, 7) 좌표에 “Important Point”라는 텍스트 레이블을 추가합니다. LabelSet 객체를 사용하여 (3, 5)(4, 9) 좌표에 각각 “Label 1”과 “Label 2”라는 텍스트 레이블을 한 번에 추가합니다.

Bokeh를 사용하여 그래프의 범례와 주석을 추가하는 방법에 대해 알아보았습니다. 이러한 기능을 활용하여 Bokeh를 사용하여 인터랙티브하고 시각적으로 매력적인 그래프를 생성할 수 있습니다.