[python] Bokeh를 사용하여 네트워크 그래프 시각화하기

네트워크 그래프는 복잡한 상호작용과 관계를 시각적으로 표현하는 데 사용되는 강력한 도구입니다. Bokeh는 Python 기반의 시각화 라이브러리로, 네트워크 그래프 시각화에 유용하게 사용될 수 있습니다.

Bokeh 설치하기

먼저, Bokeh를 설치해야 합니다. 아래의 커맨드를 사용하여 Bokeh를 설치합니다.

pip install bokeh

데이터 준비하기

네트워크 그래프를 시각화하기 위해 필요한 데이터를 준비해야 합니다. 예를 들어, 다음과 같은 방향성이 있는 그래프 데이터를 사용해보겠습니다.

nodes = ['A', 'B', 'C', 'D', 'E']
edges = [
    ('A', 'B'),
    ('A', 'C'),
    ('B', 'C'),
    ('C', 'D'),
    ('D', 'E')
]

Bokeh를 사용하여 네트워크 그래프 그리기

Bokeh를 사용하여 네트워크 그래프를 그려보겠습니다. 아래의 코드를 사용하면 됩니다.

from bokeh.plotting import figure, show
from bokeh.models import GraphRenderer, Oval
from bokeh.models.graphs import NodesAndLinkedEdges

# 그림판 만들기
plot = figure(width=500, height=500, x_range=(-2, 2), y_range=(-2, 2))

# 노드 추가하기
plot.add_glyph(GraphRenderer(), Oval(height=0.1, width=0.1, fill_color='blue'), name='node')

# 에지 추가하기
for start, end in edges:
    plot.add_glyph(GraphRenderer(), Line(start=start, end=end, line_color='black'), name='edge')

show(plot)

위의 코드를 실행하면, 네트워크 그래프가 보여집니다.

Bokeh 그래프에 스타일 적용하기

Bokeh를 사용하여 네트워크 그래프를 시각화하면, 더욱 세련된 비주얼 효과를 위해 스타일을 적용할 수 있습니다. 예를 들어, 노드와 에지의 색상, 크기 및 레이블을 변경할 수 있습니다.

from bokeh.plotting import figure, show
from bokeh.models import GraphRenderer, Oval, LabelSet
from bokeh.models.graphs import NodesAndLinkedEdges

# 그림판 만들기
plot = figure(width=500, height=500, x_range=(-2, 2), y_range=(-2, 2))

# 노드 추가하기
plot.add_glyph(GraphRenderer(), Oval(height=0.1, width=0.1, fill_color='blue'), name='node')

# 에지 추가하기
for start, end in edges:
    plot.add_glyph(GraphRenderer(), Line(start=start, end=end, line_color='black'), name='edge')

# 노드 레이블 추가하기
labels = LabelSet(x='x', y='y', text='label', level='glyph',
                  x_offset=-13, y_offset=6, source=data_source, render_mode='canvas')
plot.add_layout(labels)

show(plot)

결론

Bokeh를 사용하여 네트워크 그래프를 시각화하는 방법에 대해 알아보았습니다. Bokeh는 다양한 기능과 사용하기 쉬운 API를 통해 네트워크 그래프 시각화를 더욱 편리하게 만들어 줍니다. 추가로 Bokeh의 다양한 옵션을 통해 그래프의 스타일을 변경할 수도 있습니다. 네트워크 그래프 시각화를 위해 Bokeh를 활용해보세요!

참고 자료