【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番の人の友達の友達までを可視化できました。