그래프의 노드들 서로 다른 크기와 색상으로 그리기
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_subnet
과 low_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>