NetworkX와 Matplotlib을 함께 사용하면 그래프를 시각화할 때 엣지(간선)의 색상이나 두께 같은 다양한 속성을 자유롭게 변경할 수 있습니다. 이 글에서는 그래프 도면의 속성을 변경하는 전체 과정을 단계별로 살펴보겠습니다.
구현 단계
그림 크기(figure size)를 설정하고, 서브플롯 사이 및 주변의 여백(padding)을 조정합니다.
엣지, 이름 또는 그래프 속성을 포함하여 그래프를 초기화합니다.
그래프에 속성을 추가하고, u와 v 사이에 엣지를 연결합니다.
nx.get_edge_attributes()메서드를 사용해 그래프에서 엣지 속성(색상, 가중치)을 가져옵니다.nx.circular_layout()을 사용해 노드를 원형으로 배치합니다.Matplotlib의
nx.draw()함수로 그래프 G를 그립니다.그림을 화면에 표시하려면
show()메서드를 호출합니다.
예제 코드
import matplotlib.pyplot as plt
import networkx as nx
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
G = nx.Graph()
G.add_edge(0, 1, color='r', weight=2)
G.add_edge(1, 2, color='g', weight=4)
G.add_edge(2, 3, color='b', weight=6)
G.add_edge(3, 4, color='y', weight=3)
G.add_edge(4, 0, color='m', weight=1)
colors = nx.get_edge_attributes(G, 'color').values()
weights = nx.get_edge_attributes(G, 'weight').values()
pos = nx.circular_layout(G)
nx.draw(G, pos,
edge_color=colors,
width=list(weights),
with_labels=True,
node_color='lightgreen')
plt.show()
코드 설명
위 예제에서는 각 엣지를 추가할 때 color와 weight 속성을 함께 지정했습니다. 빨강(r), 초록(g), 파랑(b), 노랑(y), 마젠타(m)의 다섯 가지 색상이 엣지마다 다르게 적용되며, 가중치 값은 엣지의 두께(width)로 표현됩니다. nx.get_edge_attributes()는 그래프에 저장된 속성값을 딕셔너리 형태로 반환하므로, .values()를 통해 색상과 두께 목록을 손쉽게 추출할 수 있습니다.
실행 결과
위 코드를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.

결과 그래프를 보면 노드가 원형으로 배치되어 있고, 각 엣지가 서로 다른 색상과 두께로 렌더링된 것을 확인할 수 있습니다. 이처럼 엣지 단위로 속성을 지정하면 네트워크 데이터의 특성을 한눈에 파악하기 쉬운 시각화를 만들 수 있습니다.