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
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_lmcdesde los vecinos deGusando los métodos.add_nodes_from()y.neighbors(). - Usando el método
.add_edges_from(), añade aristas aG_lmcentre el nodo actual y todos sus vecinos. Para hacerlo, tendrás que crear una lista de tuplas con la funciónzip()que consista en el nodo actual y cada uno de sus vecinos. El primer argumento dezip()debe ser[node]*len(list(G.neighbors(node))), y el segundo argumento deben ser los vecinos denode.
- Añade nodos a
- Registra la puntuación de centralidad de grado de cada nodo en su metadato de nodo.
- Hazlo asignando
nx.degree_centrality(G_lmc)[n]aG_lmc.nodes[n]['degree centrality']en el segundo buclefor.
- Hazlo asignando
- 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()