Python 네트워크 분석

Python 네트워크 분석


수강중

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

동영상이 없는 텍스트 강의 자료입니다.
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>