본문 바로가기

Python

파이썬 Networkx (node, edge 생성)

Networkx는 파이썬 라이브러리 중 하나로 네트워크를 그리는데 유용한 라이브러리이다. 

이번 포스팅에서는 필자가 연구를 하면서 Networkx 라이브러리를 활용했던것을 정리할 것이다.

천천히 포스팅을 읽어보면  쉽게 이해할 수 있을 것이다.  

 

1. Library import 방법

Import networkx as nx

Jupyter notebook에 위의 문장을 넣으면 networkx를 사용할 수 있다. 

 

2. Graph 생성

g1 = nx.Graph()
g2 = nx.DiGraph()

위의 문장은 무방향성 그래프 g1과 방향성 그래프 g2를 정의하는 문장이다.

 

물론 다 아시겠지만 여기서 g1, g2는 사용자가 원하는 이름으로 바꿀 수 있다. 

 

아래의 예제에서는 무방향성 그래프 g1을 기준으로 작성하겠다. 

 

3. Graph에 Node 생성(추가)

g1.add_node(1)            # 생성한 g1그래프에 노드 1을 생성(추가)

g1.add_node("a")       # 생성한 g1그래프에 노드 "a"를 생성(추가)

g1.add_nodes_from( [2, 7, 3] )      # 생성한 그래프에 노드 2, 7, 3을 생성(추가) 

노드를 1개 추가할때는 'add_node'를 쓰고, 동시에 여러개를 추가하고 싶으면 'add_nodes_from'을 사용하면 된다. 

 

'add_nodes_from'을 사용할때 list형태로 작성하는 것을 주의하면 좋을 것 같다. 

 

4. Graph에 edge 생성(추가)

g1.add_edge(1,"a")   # 노드 1과 "a"를 연결하는 Edge를 생성(추가)

g1.add_edge(2,7)     # 노드 2와 7을 연결하는 Edge를 생성(추가)

g1.add_edges_from( [ (2,7), (1,"a")] )     # 노드 2와 7을 연결하는 Edge, 노드 1과 "a"를 연결하는 edge를 생성

노드를 추가하는 것과 마찬가지로 1개를 추가할때는 'add_edge'를 쓰고, 동시에 여러개를 추가하고 싶으면

'add_edges_from'을 사용하면 된다. 

 

'add_edges_from'을 사용할때 list안의 원소가 tuple형태로 작성하는 것을 주의하면 좋을 것 같다. 

 

5. Graph 그림 그리기

nx.draw(g1)   #g1 그래프를 시각화 

위의 명령어를 입력하면 다음과 같이 그림이 표현된다.

 

하지만 아래의 graph는 node의 이름과 edge의 굵기와 같은 속성들이 하나도 표시되지 않았다. 

 

다음포스팅에서는 graph node와 edge에 속성을 부여하고 이를 graph에 시각화 하는 법을 작성해보겠다.