-
[NetworkX] 레이아웃으로 그래프 예쁘게 그리기 (nx layout)Data & ML & AI/NetworkX 2022. 11. 11. 14:58반응형
NetworkX에서 그래프를 그려서 시각화 하는 가장 쉬운방법은 nx.draw_networkx()입니다.
nx.draw_networkx(G)
하지만 결과는 처참합니다. 이게 어떻게 생겨먹은 그래프인가 싶습니다.
이럴 때 layout을 이용하면 편리합니다.
kamada kawai layout
NetworkX가 기본적으로 제공하는 레이아웃 중 가장 마음 편하게 쓸 수 있는 레이아웃 중 하나입니다.
pos = nx.kamada_kawai_layout(G) nx.draw(G, pos, with_labels=True)
훨씬 깔끔해지고, 한눈에 들어옵니다.
그 외 다양한 레이아웃
pos G=nx.path_graph(15) G=nx.complete_graph(15) G=위의 그래프 kamada_kawai_layout circular_layout planar_layout NetworkXException: G is not planar. spring_layout spiral_layout shell_layout 레이아웃을 적용시키는 방법은 모두 동일합니다.
pos = nx.{레이아웃 이름}(G) nx.draw(G, pos, with_labels=True)
단, shell_layout만 빼고요.
shell_layout
shell_layout은 이름처럼 껍질이 따로 있습니다.
안쪽에 들어갈 노드와 밖에 껍질로 그릴 노드를 따로 지정해줘야 합니다.
shells = [[0,1,2,3,4],[5,6,7,8,9,10,11,12,13,14]] pos = nx.shell_layout(G, shells) nx.draw(G, pos, with_labels=True)
반응형'Data & ML & AI > NetworkX' 카테고리의 다른 글
[NetwrokX] 방향그래프의 연결성분(Connected Components) (0) 2022.11.16 [NetwrokX] 그래프 연결성분(연결요소, Connected Components) (0) 2022.11.15 [NetworkX] 네트워크 견고성(Robustness in Networks) (0) 2022.11.09 [NetworkX] 그래프를 거리(length)로 설명하는 방법(평균거리, 지름, 반지름, 둘레, 이심률) (0) 2022.11.03 [NetworkX] 너비 우선 탐색, 트리 구조 그리기 (0) 2022.11.02