Wizualizacja za pomocą wykresów macierzowych
Czas wypróbować pierwszą „efektowną" metodę wizualizacji grafów: wykres macierzowy. Biblioteka nxviz udostępnia w tym celu funkcję matrix(). Podobnie jak wszystkie funkcje najwyższego poziomu w nxviz, zwraca ona obiekt osi matplotlib, który można wyświetlić za pomocą plt.show().
nxviz to biblioteka do racjonalnej wizualizacji grafów. Wewnętrznie funkcja matrix korzysta z nx.to_numpy_array(G), która zwraca macierzową reprezentację grafu. Każdy węzeł odpowiada jednej kolumnie i jednemu wierszowi, a krawędź między dwoma węzłami jest oznaczona wartością 1. W tej reprezentacji zachowywane są jednak wyłącznie metadane weight – wszystkie pozostałe metadane są tracone, co zweryfikujesz za pomocą instrukcji assert.
Odpowiadająca jej funkcja nx.from_numpy_array(A) pozwala szybko utworzyć graf z tablicy NumPy. Domyślnym typem grafu jest Graph(); jeśli chcesz uzyskać DiGraph(), należy to określić za pomocą argumentu kluczowego create_using, np. (nx.from_numpy_array(A, create_using=nx.DiGraph)).
Na koniec: matplotlib.pyplot i networkx zostały już zaimportowane odpowiednio jako plt i nx, a graf T jest wstępnie wczytany. Dla uproszczenia i przyspieszenia obliczeń użyto tylko 100 krawędzi z sieci.
To ćwiczenie jest częścią kursu
Wprowadzenie do analizy sieci w Pythonie
Instrukcje do ćwiczenia
- Zaimportuj
matrixznxviz. - Wyświetl graf
Tjako wykres macierzowy. W tym celu:- Utwórz wykres macierzowy o nazwie
m, wywołując funkcjęnv.matrix()z argumentemT. - Wyświetl wykres, używając
plt.show().
- Utwórz wykres macierzowy o nazwie
- Przekształć graf do formatu macierzowego, a następnie z powrotem do postaci NetworkX jako graf skierowany. Ten krok został już za ciebie wykonany.
- Sprawdź, czy pole metadanych
categoryzostało utracone dla każdego węzła. To również zostało już wykonane – kliknij „Prześlij odpowiedź", aby zobaczyć wyniki!
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# Import nxviz
____
# Create the matrix plot: m
m = ____
# Display the plot
____
# Convert T to a matrix format: A
A = nx.to_numpy_array(T)
# Convert A back to the NetworkX form as a directed graph: T_conv
T_conv = nx.from_numpy_array(A, create_using=nx.DiGraph())
# Check that the `category` metadata field is lost from each node
for n, d in T_conv.nodes(data=True):
assert 'category' not in d.keys()