Zacznij terazZacznij za darmo

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

Zobacz kurs

Instrukcje do ćwiczenia

  • Zaimportuj matrix z nxviz.
  • Wyświetl graf T jako wykres macierzowy. W tym celu:
    • Utwórz wykres macierzowy o nazwie m, wywołując funkcję nv.matrix() z argumentem T.
    • Wyświetl wykres, używając plt.show().
  • 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 category został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()
Edytuj i uruchom kod