그래프의 노드들 서로 다른 크기와 색상으로 그리기 :: Python 네트워크 분석 - mindscale
Skip to content

그래프의 노드들 서로 다른 크기와 색상으로 그리기

import networkx as nx
from matplotlib import pyplot

레미제라블 등장인물 그래프를 생성한다.

G = nx.les_miserables_graph()

각 노드의 좌표를 계산한다.

pos = nx.spring_layout(G, k=0.2)

차수가 10보다 큰 노드는 high_degree에, 낮은 노드는 low_degree에 추가한다.

high_degree = []
low_degree = []
for node, deg in nx.degree(G):
    if deg > 10:
        high_degree.append(node)
    else:
        low_degree.append(node)

차수가 높은 노드만 뽑은 서브 그래프 high_subnet과 낮은 노드만 뽑은 서브그래프 low_subnet을 만든다.

high_subnet = G.subgraph(high_degree)
low_subnet = G.subgraph(low_degree)

high_subnetlow_subnet을 크기와 색상을 달리하여 그린다.

# 그림 크기를 가로 12, 세로 10으로 설정
pyplot.rcParams['figure.figsize'] = (12, 10)  

# 차수가 높은 노드를 크기 2000, 핑크색으로 그린다
nx.draw_networkx_nodes(high_subnet, pos=pos, node_size=2000, node_color='pink') 

# 차수가 높은 노드의 글씨를 크기 15, 빨간색으로 쓴다
nx.draw_networkx_labels(high_subnet, pos=pos, font_size=15, font_color='red')

# 차수가 낮은 노드를 크기 300, 회색으로 그린다
nx.draw_networkx_nodes(low_subnet, pos=pos, node_size=300, node_color='grey')

# 차수가 낮은 노드의 글씨를 크기 9, 검은색으로 쓴다
nx.draw_networkx_labels(low_subnet, pos=pos, font_size=9, font_color='black')

# 그래프 전체의 에지를 밝은 회색으로 그린다
nx.draw_networkx_edges(G, pos=pos, edge_color='lightgrey')
<matplotlib.collections.LineCollection at 0x23f25859550>