Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

NetworkX를 활용해 Matplotlib 그래프에 노드 이름 표시하기

NetworkX로 그래프에 노드 이름 표시하기

Python의 NetworkX 라이브러리와 Matplotlib을 함께 사용하면 그래프를 시각화하면서 각 노드의 이름까지 손쉽게 표시할 수 있습니다. 아래 단계를 따라 진행해 보세요.

  1. 그림(figure) 크기를 설정하고, 서브플롯 주변 및 사이의 여백(padding)을 조정합니다.
  2. 간선, 이름 또는 그래프 속성을 지정하여 그래프 객체를 초기화합니다.
  3. add_nodes_from() 메서드를 사용해 여러 개의 노드를 한 번에 추가합니다.
  4. add_edges_from() 메서드를 사용해 모든 간선(edge)을 추가합니다.
  5. draw() 메서드로 Matplotlib을 통해 그래프 G를 그립니다. 이때 with_labels=True 옵션을 지정하면 노드 이름이 함께 표시됩니다.
  6. plt.show() 메서드를 호출하여 완성된 그래프를 화면에 출력합니다.

예제 코드

import matplotlib.pylab as plt
import networkx as nx

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

G = nx.DiGraph()
G.add_nodes_from([1, 2, 3, 4])
G.add_edges_from([(1, 2), (2, 1), (2, 3), (1,4), (3,4)])
nx.draw(G, with_labels=True)

plt.show()

위 코드에서는 방향 그래프(DiGraph)를 생성하고, 네 개의 노드와 다섯 개의 방향성 간선을 추가했습니다. with_labels=True 옵션이 핵심으로, 이 값을 생략하면 노드 이름 없이 점만 표시되므로 주의하세요.

실행 결과

NetworkX를 활용해 Matplotlib 그래프에 노드 이름 표시하기

결과 이미지를 보면 각 노드 옆에 숫자 라벨(노드 이름)이 함께 나타나는 것을 확인할 수 있습니다. 이처럼 NetworkX의 draw 함수는 기본적으로 Matplotlib 위에서 동작하기 때문에, figure 크기나 레이아웃 등 일반적인 Matplotlib 설정을 그대로 활용할 수 있다는 장점이 있습니다.