ComeçarComece de graça

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

Ver curso

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_lmc a partir dos vizinhos de G usando os métodos .add_nodes_from() e .neighbors().
    • Usando o método .add_edges_from(), adicione arestas a G_lmc entre o nó atual e todos os seus vizinhos. Para fazer isso, você vai criar uma lista de tuplas usando a função zip() composta pelo nó atual e cada um de seus vizinhos. O primeiro argumento de zip() deve ser [node]*len(list(G.neighbors(node))), e o segundo argumento deve ser os vizinhos de node.
  • 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] a G_lmc.nodes[n]['degree centrality'] no segundo loop for.
  • 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()
Editar e executar o código