Study Anything ๐ง
[NetworkX] ๊ทธ๋ํ ์ ์ฅํ๊ณ ๋ถ๋ฌ์ค๊ธฐ ๋ณธ๋ฌธ
์ฐธ๊ณ : NetworkX : GML
ํ์ด์ฌ ํ์ผ์ ์คํํ ๋๋ง๋ค ๊ทธ๋ํ๋ฅผ ๊ทธ๋ฆฌ์ง ์์๋ ๋๋ ๊ฒฝ์ฐ๋ค์ด ์๋ค.
์ด๋ฐ ๊ฒฝ์ฐ, ๊ทธ๋ํ๋ฅผ ํ ๋ฒ ๊ทธ๋ ค ์ ์ฅํ๊ณ ์ ์ฅ๋ ๊ทธ๋ํ๋ฅผ ๋ถ๋ฌ์ค๋ ๊ฒ์ด ํจ์จ์ ์ด๋ค.
์ด๋ฒ ํฌ์คํธ์์๋ ๊ทธ๋ฆฐ ๊ทธ๋ํ๋ฅผ ์ ์ฅํ๊ณ ๋ค๋ฅธ ํ์ผ์์ ๋ถ๋ฌ์ค๋ ๋ฐฉ๋ฒ์ ๋ค๋ค๋ณด์.
๊ทธ๋ํ๋ json, gml ๋ฑ ์ฌ๋ฌ ํฌ๋งท์ผ๋ก ์ ์ฅํ ์ ์์ง๋ง ๋๋ ๋จ์ํ ๊ทธ๋ํ๋ฅผ ํ์ด์ฌ ํ์ผ์ ๋ค์ ๋ถ๋ฌ์ฌ ์ฉ๋๋ก ์ ์ฅํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ GML ํฌ๋งท์ผ๋ก ์ ์ฅํ๋ค.
๋จผ์ ๊ทธ๋ํ๋ฅผ ๊ทธ๋ฆฐ ๋ถ๋ถ์ ์๋ก์ด ํ์ผ์ ์ฎ๊ฒจ์ค๋ค.
๊ธฐ์กด : main.py -> ์ ํ์ผ : graph.py
# 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() ๋ฑ ๊ทธ๋๋ก ์ฌ์ฉ ๊ฐ๋ฅํจ)
์คํ ํ์ผ์ ์คํํ ๋๋ง๋ค ๊ทธ๋ํ๋ฅผ ์๋ก ๊ทธ๋ ค์ผ ํ๋ ๊ฒฝ์ฐ๋ ์ด์ฉ ์ ์์ง๋ง,
๋ง์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ ๊ทธ๋ํ๋ฅผ ํ ๋๋ก ๊ฐ๊ณต์ ํ๊ธฐ ๋๋ฌธ์ ์ด๋ฒ ํฌ์คํธ์์๋ ๊ทธ๋ํ๋ฅผ ์ ์ฅํ๊ณ ๋ถ๋ฌ์ค๋ ๋ฐฉ๋ฒ์ ๋ํด ๋ค๋ค๋ณด์๋ค.