IniziaInizia gratis

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

Visualizza il corso

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_lmc dai vicini di G usando i metodi .add_nodes_from() e .neighbors().
    • Usando il metodo .add_edges_from(), aggiungi ad G_lmc gli archi tra il nodo corrente e tutti i suoi vicini. Per farlo, dovrai creare una lista di tuple con la funzione zip() composta dal nodo corrente e da ciascuno dei suoi vicini. Il primo argomento di zip() dovrebbe essere [node]*len(list(G.neighbors(node))), e il secondo argomento dovrebbero essere i vicini di node.
  • Registra lo score di degree centrality di ciascun nodo nei suoi metadati.
    • Fallo assegnando nx.degree_centrality(G_lmc)[n] a G_lmc.nodes[n]['degree centrality'] nel secondo ciclo for.
  • 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()
Modifica ed esegui il codice