Caracterizarea comunităților de editare
Vei combina acum ce ai învățat despre algoritmul BFS și conceptul de clici maximale pentru a vizualiza rețeaua cu un Arc plot.
Cea mai mare clică maximală din rețeaua de colaborare a utilizatorilor GitHub a fost atribuită subgrafului G_lmc. Reține că, începând cu versiunea 2.x a NetworkX, G.subgraph(nodelist) returnează doar o vizualizare imuabilă a grafului original. Trebuie să soliciți explicit o copie prin .copy() pentru a obține o versiune modificabilă.
Acest exercițiu face parte din cursul
Introducere în analiza rețelelor în Python
Instrucțiuni pentru exercițiu
- Extinde cu 1 grad de separare față de clică și adaugă acei utilizatori în subgraf. În interiorul primului
for:- Adaugă noduri în
G_lmcdin vecinii luiG, folosind metodele.add_nodes_from()și.neighbors(). - Folosind metoda
.add_edges_from(), adaugă muchii înG_lmcîntre nodul curent și toți vecinii săi. Pentru aceasta, va trebui să creezi o listă de tupluri cu funcțiazip(), formată din nodul curent și fiecare vecin al său. Primul argument alzip()trebuie să fie[node]*len(list(G.neighbors(node))), iar al doilea — vecinii luinode.
- Adaugă noduri în
- Înregistrează scorul de centralitate a gradului al fiecărui nod în metadatele sale.
- Fă acest lucru atribuind
nx.degree_centrality(G_lmc)[n]luiG_lmc.nodes[n]['degree centrality']în al doileafor.
- Fă acest lucru atribuind
- Vizualizează această rețea cu un Arc plot, sortând nodurile după centralitatea gradului (poți folosi argumentul cheie
sort_by='degree centrality').
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# 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()