データアナリストのメモ帳

データアナリストのメモ帳

IT企業で働くデータアナリストのブログ

【Python】NetworkXで友達の友達を可視化する方法

NetworkXを使ってSNSの分析をするときに便利かもしれない。
誰かの友達の友達をリストアップして可視化する方法です。

やり方は簡単で、最短経路長が2の人(1は友達)を探してくれば良いわけです。
例として、Zacharyの空手クラブを用います。

import networkx as nx
G = nx.karate_club_graph()

pos = nx.kamada_kawai_layout(G)
nx.draw(G, pos, with_labels=True, font_size=9, node_size=500, node_color="skyblue", font_color="black")

single_source_shortest_path_length を使って、指定したノードから各ノードへの最短経路長を調べます。
最短経路長 <= 2 とすれば、友達の友達までをリストアップできます。

# 1番の人を指定
i = 1
shortest_path_length = nx.single_source_shortest_path_length(G, i)

# 最短経路長2以内のnodeを取り出す
subset = {key:value for key, value in shortest_path_length.items() if value <= 2}
subset = list(subset)

# 色指定
color_map = []
for node in G.nodes():
    if node == i:
        color_map.append('red')
    elif node in subset:
        color_map.append('orange')
    else: 
        color_map.append('skyblue')  

pos = nx.kamada_kawai_layout(G)
nx.draw(G, pos, with_labels=True, font_size=9, node_size=500, node_color=color_map, font_color="black")

これで1番の人の友達の友達までを可視化できました。