[python] Bokeh를 이용한 수학 과정 시각화

Bokeh는 파이썬 기반의 인터랙티브 시각화 라이브러리로, 수학 과정을 시각화하는 데에 매우 유용합니다. Bokeh를 사용하면 다양한 수학 개념을 시각적으로 표현하고, 데이터를 인터랙티브하게 탐색할 수 있습니다.

Bokeh 설치하기

Bokeh를 사용하기 위해 먼저 파이썬 환경에 Bokeh 패키지를 설치해야 합니다. 다음의 명령을 사용하여 설치할 수 있습니다:

pip install bokeh

기본적인 그래프 그리기

Bokeh를 사용하여 간단한 그래프를 그려보겠습니다. 먼저 Figure 클래스를 사용하여 그래프를 생성합니다. 그리고 line 메소드를 사용하여 선을 그리는 코드를 작성합니다. 예를 들어, x 축은 0부터 9까지의 값을 가지고, y 축은 x의 제곱값으로 설정한 그래프를 그릴 수 있습니다:

from bokeh.plotting import figure, show

# 데이터 생성
x = list(range(10))
y = [num ** 2 for num in x]

# 그래프 생성
p = figure(title='x의 제곱값 그래프', x_axis_label='x', y_axis_label='y')

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

# 그래프 출력
show(p)

인터랙티브한 시각화

Bokeh를 사용하면 그래프와 데이터를 인터랙티브하게 조작할 수 있습니다. 예를 들어, 그래프에 마우스를 올리면 해당 데이터 값이 나타나거나, 그래프를 확대/축소하거나, 그래프를 드래그하여 원하는 영역을 선택할 수 있습니다.

이를 위해서는 CustomJS 객체를 사용합니다. 아래의 코드는 그래프를 클릭할 때마다 해당 좌표의 값을 출력하는 인터랙티브 그래프를 그리는 예제입니다:

from bokeh.models import CustomJS
from bokeh.plotting import figure, show

# 데이터 생성
x = list(range(10))
y = [num ** 2 for num in x]

# 그래프 생성
p = figure(title='x의 제곱값 그래프', x_axis_label='x', y_axis_label='y', tools='tap')

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

# 인터랙티브 기능 추가
callback = CustomJS(args=dict(source=p), code="""
    var x = source.data.x;
    var y = source.data.y;
    var indices = source.selected.indices;
    
    for (var i = 0; i < indices.length; i++) {
        var idx = indices[i];
        console.log("x: " + x[idx] + ", y: " + y[idx]);
    }
""")
p.js_on_event('tap', callback)

# 그래프 출력
show(p)

추가적인 자원

위의 예제를 통해 Bokeh를 이용하여 수학 과정을 시각화하는 방법에 대해 알아보았습니다. Bokeh를 사용하면 수학과학을 더욱 직관적이고 흥미로운 방식으로 시각화할 수 있습니다.