Caracterizando comunidades de edição
Agora você vai combinar o que aprendeu sobre o algoritmo BFS e o conceito de cliques maximais para visualizar a rede com um Arc plot.
A maior clique maximal na rede de colaboração de usuários do Github foi atribuída ao subgrafo G_lmc. Observe que, para NetworkX versão 2.x e posteriores, G.subgraph(nodelist) retorna apenas uma visualização imutável do grafo original. É preciso solicitar explicitamente uma .copy() do grafo para obter uma versão mutável.
Este exercício faz parte do curso
Introdução à Análise de Redes em Python
Instruções do exercício
- Vá 1 grau de separação para fora da clique e adicione esses usuários ao subgrafo. Dentro do primeiro loop
for:- Adicione nós a
G_lmca partir dos vizinhos deGusando os métodos.add_nodes_from()e.neighbors(). - Usando o método
.add_edges_from(), adicione arestas aG_lmcentre o nó atual e todos os seus vizinhos. Para fazer isso, você vai criar uma lista de tuplas usando a funçãozip()composta pelo nó atual e cada um de seus vizinhos. O primeiro argumento dezip()deve ser[node]*len(list(G.neighbors(node))), e o segundo argumento deve ser os vizinhos denode.
- Adicione nós a
- Registre a pontuação de centralidade de grau de cada nó nos metadados do nó.
- Faça isso atribuindo
nx.degree_centrality(G_lmc)[n]aG_lmc.nodes[n]['degree centrality']no segundo loopfor.
- Faça isso atribuindo
- Visualize essa rede com um Arc plot ordenando os nós por centralidade de grau (você pode fazer isso usando o argumento nomeado
sort_by='degree centrality').
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
# 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()