Caratterizzare le comunità di editing
Ora metterai insieme ciò che hai imparato sull'algoritmo BFS e sul concetto di clique massimali per visualizzare la rete con un Arc plot.
La clique massimale più grande nella rete di collaborazione tra utenti Github è stata assegnata al sottografo G_lmc. Nota che per NetworkX versione 2.x e successive, G.subgraph(nodelist) restituisce solo una vista immutabile del grafo originale. Dobbiamo chiedere esplicitamente una .copy() del grafo per ottenere una versione mutabile.
Questo esercizio fa parte del corso
Introduzione all'analisi delle reti in Python
Istruzioni dell'esercizio
- Estendi di 1 grado di separazione a partire dalla clique e aggiungi quegli utenti al sottografo. All'interno del primo ciclo
for:- Aggiungi nodi a
G_lmcdai vicini diGusando i metodi.add_nodes_from()e.neighbors(). - Usando il metodo
.add_edges_from(), aggiungi adG_lmcgli archi tra il nodo corrente e tutti i suoi vicini. Per farlo, dovrai creare una lista di tuple con la funzionezip()composta dal nodo corrente e da ciascuno dei suoi vicini. Il primo argomento dizip()dovrebbe essere[node]*len(list(G.neighbors(node))), e il secondo argomento dovrebbero essere i vicini dinode.
- Aggiungi nodi a
- Registra lo score di degree centrality di ciascun nodo nei suoi metadati.
- Fallo assegnando
nx.degree_centrality(G_lmc)[n]aG_lmc.nodes[n]['degree centrality']nel secondo ciclofor.
- Fallo assegnando
- Visualizza questa rete con un Arc plot ordinando i nodi per degree centrality (puoi farlo usando l'argomento keyword
sort_by='degree centrality').
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# 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()