Charakterystyka społeczności edytorów
Teraz połączysz wiedzę o algorytmie BFS i pojęciu maksymalnych klik, aby zwizualizować sieć za pomocą wykresu Arc.
Największa maksymalna klika w sieci współpracy użytkowników GitHub została przypisana do podgrafu G_lmc. Pamiętaj, że w wersji NetworkX 2.x i późniejszych G.subgraph(nodelist) zwraca jedynie niemodyfikowalny widok oryginalnego grafu. Aby uzyskać modyfikowalną wersję, musisz jawnie wywołać .copy() na grafie.
To ćwiczenie jest częścią kursu
Wprowadzenie do analizy sieci w Pythonie
Instrukcje do ćwiczenia
- Wyjdź o 1 stopień separacji od kliki i dodaj tych użytkowników do podgrafu. Wewnątrz pierwszej pętli
for:- Dodaj węzły do
G_lmcz sąsiadów grafuG, korzystając z metod.add_nodes_from()i.neighbors(). - Za pomocą metody
.add_edges_from()dodaj krawędzie doG_lmcmiędzy bieżącym węzłem a wszystkimi jego sąsiadami. W tym celu utwórz listę krotek przy użyciu funkcjizip(), składającą się z bieżącego węzła i każdego z jego sąsiadów. Pierwszym argumentemzip()powinien być[node]*len(list(G.neighbors(node))), a drugim – sąsiedzi węzłanode.
- Dodaj węzły do
- Zapisz wynik centralności stopnia każdego węzła w jego metadanych.
- Zrób to, przypisując
nx.degree_centrality(G_lmc)[n]doG_lmc.nodes[n]['degree centrality']w drugiej pętlifor.
- Zrób to, przypisując
- Zwizualizuj tę sieć za pomocą wykresu Arc, sortując węzły według centralności stopnia (użyj do tego argumentu kluczowego
sort_by='degree centrality').
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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()