스터디/Python

[NetworkX] 그래프 저장하고 불러오기

sollllllll 2022. 7. 7. 16:40

참고 : NetworkX : GML

 

파이썬 파일을 실행할 때마다 그래프를 그리지 않아도 되는 경우들이 있다.

이런 경우, 그래프를 한 번 그려 저장하고 저장된 그래프를 불러오는 것이 효율적이다.

 

이번 포스트에서는 그린 그래프를 저장하고 다른 파일에서 불러오는 방법을 다뤄보자.

 

그래프는 json, gml 등 여러 포맷으로 저장할 수 있지만 나는 단순히 그래프를 파이썬 파일에 다시 불러올 용도로 저장하는 것이기 때문에 GML 포맷으로 저장했다.

 

 

 

먼저 그래프를 그려준다.

# graph.py

import networkx as nx

def drawGraph(data):
	# 그래프 그리는 부분 생략

...

G = nx.Graph()
drawGraph()

 

 

하위에 다음과 같은 코드를 작성한 후 파일을 실행해 그래프를 저장한다.

# graph.py

...

nx.write_gml(G, "graphData.gml")	# G: 저장할 그래프, path: 저장할 경로

이 때, path 부분에 상대경로로 단순히 파일명만 써도 되지만 저장이 잘 안 된다면 절대경로를 쓰는 것을 추천한다.

( filepath 변수에 현재 작업 디렉토리 경로를 저장해두고 filepath+'파일명' 형태로 입력하는 방법도 있다.)

 

 

 

기존 파일에서 그래프를 불러오기 위해 코드를 작성한다.

# main.py

...

# 기존에 그래프를 그리던 부분 삭제
G = read_gml("graphData.gml")	# path: 그래프가 저장된 경로

저장할 때와 마찬가지로 path 부분은 상대경로, 절대경로 중 편한 것을 사용하면 된다.

 

 

위와 같이 불러온 뒤에는 추가 작업 없이 그대로 그래프를 사용할 수 있어서 매우 편리했다.

(G.nodes(), G.edges() 등 메소드 사용 가능함)

 

 

 

매번 그래프를 새로 그려야 하는 경우는 어쩔 수 없지만,

대부분은 그려둔 그래프를 토대로 가공하기 때문에 이번 포스트에서는 그래프를 저장하고 불러오는 방법에 대해 다뤄보았다.