Анализ сообществ редакторов
Теперь вы объедините знания об алгоритме 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(), где первый аргумент —[node]*len(list(G.neighbors(node))), а второй — соседи узлаnode.
- Добавьте узлы в
- Запишите оценку центральности по степени каждого узла в его метаданные.
- Для этого во втором цикле
forприсвойтеnx.degree_centrality(G_lmc)[n]значениюG_lmc.nodes[n]['degree centrality'].
- Для этого во втором цикле
- Визуализируйте эту сеть с помощью 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()