파이썬을 이용해 그래프를 구현하는 방법에는 igraph, networkx 등이 있지만 그 중에서
networkx 모듈을 활용해 그래프를 그리는 예제를 공유하고자 한다.
그래프를 시각화 하기 위해서는matplotlib 이 필요하다.
import networkx as nx
import matplotlib.pyplot as plt
def draw_graph(graph):
# graph 객체에서 노드들을 뽑아 nodes 에 저장한다
nodes = set([n1 for n1, n2 in graph] + [n2 for n1, n2 in graph])
# 그래프 객체를 하나 만든다
G=nx.Graph()
# add_node() 를 통해 그래프에 노드를 입력한다
for node in nodes:
G.add_node(node)
# add_edges() 를 통해 노드간의 엣지를 지정해 준다
for edge in graph:
G.add_edge(edge[0], edge[1])
# 그리려는 그래프의 속성을 설정해 준다
nx.draw_networkx_nodes(G,pos,node_size=5)
nx.draw_networkx_edges(G,pos,width=1)
nx.draw_networkx_labels(G,pos,font_size=10,font_family='sans-serif')
# 그래프 그림을 파일로 저장한다
plt.axis('off')
plt.savefig("graph.png", dpi=1000) # 그림 파일 크기 지정
plt.savefig("weighted_graph.png") # png 파일로 저장
# 그래프 레이아웃을 저장한다
pos = nx.shell_layout(G)
nx.draw(G, pos)
# matplotlib 모듈을 이용해 그래프를 시각화 한다.
plt.show()
# 그리고자 하는 그래프 예제
graph = [(20, 21),(21, 22),(22, 23), (23, 24),(24, 25), (25, 20)]
draw_graph(graph)참고 : https://www.udacity.com/wiki/creating%20network%20graphs%20with%20python
댓글 없음:
댓글 쓰기