Bewerkingsgemeenschappen karakteriseren
Je gaat nu combineren wat je hebt geleerd over het BFS-algoritme en het concept van maximale klieken om het netwerk te visualiseren met een Arc-plot.
De grootste maximale kliek in het Github-samenwerkingsnetwerk van gebruikers is toegewezen aan de subgraaf G_lmc. Let op: voor NetworkX versie 2.x en later geeft G.subgraph(nodelist) alleen een onveranderlijke weergave van de oorspronkelijke graaf terug. We moeten expliciet om een .copy() van de graaf vragen om een wijzigbare versie te krijgen.
Deze oefening maakt deel uit van de cursus
Introductie tot netwerkanalyse in Python
Oefeninstructies
- Ga 1 graad van scheiding vanaf de kliek, en voeg die gebruikers toe aan de subgraaf. Binnen de eerste
for-lus:- Voeg knopen toe aan
G_lmcvanuit de buren vanGmet de methoden.add_nodes_from()en.neighbors(). - Gebruik de methode
.add_edges_from()om randen toe te voegen aanG_lmctussen de huidige knoop en al zijn buren. Maak hiervoor een lijst met tuples met de functiezip(), bestaande uit de huidige knoop en elk van zijn buren. Het eerste argument vanzip()moet[node]*len(list(G.neighbors(node)))zijn, en het tweede argument moeten de buren vannodezijn.
- Voeg knopen toe aan
- Leg de graadcentraliteitsscore van elke knoop vast in zijn knoopmetadata.
- Doe dit door
nx.degree_centrality(G_lmc)[n]toe te wijzen aanG_lmc.nodes[n]['degree centrality']in de tweedefor-lus.
- Doe dit door
- Visualiseer dit netwerk met een Arc-plot en sorteer de knopen op graadcentraliteit (dit kan met het keywordargument
sort_by='degree centrality').
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# 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()