ComenzarEmpieza gratis

Caracterizando comunidades de edición

Ahora vas a combinar lo que has aprendido sobre el algoritmo BFS y el concepto de cliques maximales para visualizar la red con un gráfico de arcos (Arc plot).

La mayor clique maximal en la red de colaboración de usuarios de Github se ha asignado al subgrafo G_lmc. Ten en cuenta que, para NetworkX versión 2.x y posteriores, G.subgraph(nodelist) devuelve solo una vista inmutable del grafo original. Debemos solicitar explícitamente una .copy() del grafo para obtener una versión mutable.

Este ejercicio forma parte del curso

Introducción al análisis de redes en Python

Ver curso

Instrucciones del ejercicio

  • Sal 1 grado de separación desde la clique y añade esos usuarios al subgrafo. Dentro del primer bucle for:
    • Añade nodos a G_lmc desde los vecinos de G usando los métodos .add_nodes_from() y .neighbors().
    • Usando el método .add_edges_from(), añade aristas a G_lmc entre el nodo actual y todos sus vecinos. Para hacerlo, tendrás que crear una lista de tuplas con la función zip() que consista en el nodo actual y cada uno de sus vecinos. El primer argumento de zip() debe ser [node]*len(list(G.neighbors(node))), y el segundo argumento deben ser los vecinos de node.
  • Registra la puntuación de centralidad de grado de cada nodo en su metadato de nodo.
    • Hazlo asignando nx.degree_centrality(G_lmc)[n] a G_lmc.nodes[n]['degree centrality'] en el segundo bucle for.
  • Visualiza esta red con un gráfico de arcos (Arc plot) ordenando los nodos por centralidad de grado (puedes hacerlo usando el argumento con nombre sort_by='degree centrality').

Ejercicio interactivo práctico

Prueba este ejercicio y completa el código de muestra.

# 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 y ejecutar código