編集コミュニティの特徴づけ
これまでに学んだ BFS アルゴリズムと最大クリークの概念を組み合わせて、Arc plot でネットワークを可視化してみましょう。
GitHub のユーザー共同作業ネットワークにおける最大の最大クリークは、サブグラフ G_lmc に割り当てられています。NetworkX のバージョン 2.x 以降では、G.subgraph(nodelist) は元のグラフへの不変ビューのみを返す点に注意してください。変更可能なバージョンを得るには、明示的に .copy() を呼び出す必要があります。
この演習はコースの一部です
Pythonで学ぶネットワーク分析入門
演習の手順
- クリークから 1 次の近接まで範囲を広げ、そのユーザーをサブグラフに追加します。最初の
forループ内で行います。.add_nodes_from()と.neighbors()メソッドを使って、Gの近傍からG_lmcにノードを追加します。.add_edges_from()メソッドを使って、現在のノードとそのすべての近傍との間にG_lmcへエッジを追加します。そのために、zip()関数で現在のノードと各近傍からなるタプルのリストを作成します。zip()の第1引数は[node]*len(list(G.neighbors(node)))、第2引数はnodeの近傍にしてください。
- 各ノードの次数中心性スコアを、そのノードのメタデータに記録します。
- 2つ目の
forループで、nx.degree_centrality(G_lmc)[n]をG_lmc.nodes[n]['degree centrality']に代入します。
- 2つ目の
- ノードを次数中心性で並べ替えて、このネットワークを Arc plot で可視化します(キーワード引数
sort_by='degree centrality'を使います)。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Import necessary modules
from nxviz import arc
import matplotlib.pyplot as plt
# Identify the largest maximal clique: largest_max_clique
largest_max_clique = set(sorted(nx.find_cliques(G), key=lambda x: len(x))[-1])
# Create a subgraph from the largest_max_clique: G_lmc
G_lmc = G.subgraph(largest_max_clique).copy()
# Go out 1 degree of separation
for node in list(G_lmc.nodes()):
G_lmc.add_nodes_from(____)
G_lmc.add_edges_from(zip(____, ____))
# Record each node's degree centrality score
for n in G_lmc.nodes():
____ = ____
# Create the Arc plot: a
a = ____
# Draw the Arc plot to the screen
a
plt.show()