Характеристика спільнот редагування
Тепер ви поєднаєте знання про алгоритм BFS і поняття максимальних кліків, щоб візуалізувати мережу за допомогою Arc plot.
Найбільша максимальна кліка в мережі співпраці користувачів Github призначена підграфу G_lmc. Зауважте, що для NetworkX версії 2.x і пізніших G.subgraph(nodelist) повертає лише незмінюваний вигляд вихідного графа. Щоб отримати змінювану версію, потрібно явно викликати .copy() цього графа.
Ця вправа є частиною курсу
Вступ до аналізу мереж у Python
Інструкції до вправи
- Розширтеся на 1 ступінь відстані від кліки та додайте цих користувачів до підграфа. Усередині першого циклу
for:- Додайте вузли до
G_lmcіз сусідівG, використавши методи.add_nodes_from()і.neighbors(). - Використавши метод
.add_edges_from(), додайте доG_lmcребра між поточним вузлом і всіма його сусідами. Для цього створіть список кортежів за допомогою функціїzip(), що складається з поточного вузла та кожного його сусіда. Першим аргументомzip()має бути[node]*len(list(G.neighbors(node))), а другим — сусідиnode.
- Додайте вузли до
- Запишіть для кожного вузла його показник ступеневої центральності в метадані вузла.
- Зробіть це, присвоївши
nx.degree_centrality(G_lmc)[n]доG_lmc.nodes[n]['degree centrality']у другому цикліfor.
- Зробіть це, присвоївши
- Візуалізуйте цю мережу за допомогою 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()