Visualiseren met matrixplots
Tijd voor je eerste "fancy" grafvisualisatie: een matrixplot. Hiervoor biedt nxviz een functie matrix(). Deze functie retourneert, net als alle top-level API-functies van nxviz, een Matplotlib-axesobject dat je kunt tonen met plt.show().
nxviz is een pakket om grafen op een doordachte manier te visualiseren. Onder water gebruikt de functie matrix nx.to_numpy_matrix(G), die de matrixvorm van de graaf teruggeeft. Hierbij is elke knoop één kolom en één rij, en een rand tussen twee knopen wordt aangegeven met de waarde 1. Daarbij blijft echter alleen de weight-metadata behouden; alle andere metadata gaat verloren, zoals je zult verifiëren met een assert-statement.
Met de bijbehorende nx.from_numpy_matrix(A) kun je snel een graaf maken op basis van een NumPy-matrix. Het standaardtype graaf is Graph(); als je er een DiGraph() van wilt maken, moet je dat opgeven met het keywordargument create_using, bijvoorbeeld (nx.from_numpy_matrix(A, create_using=nx.DiGraph)).
Nog een laatste opmerking: matplotlib.pyplot en networkx zijn al geïmporteerd als respectievelijk plt en nx, en de graaf T is al vooraf ingeladen. Voor eenvoud en snelheid hebben we slechts 100 randen uit het netwerk gesampled.
Deze oefening maakt deel uit van de cursus
Introductie tot netwerkanalyse in Python
Oefeninstructies
- Importeer
matrixuitnxviz. - Plot de graaf
Tals een matrixplot. Doe dit als volgt:- Maak de matrixplot
mmet de functienv.matrix()en geefTdoor als argument. - Toon de plot met
plt.show().
- Maak de matrixplot
- Zet de graaf om naar matrixformaat en vervolgens weer terug naar NetworkX vanuit de matrix als een gerichte graaf. Dit is al voor je gedaan.
- Controleer dat het
category-metadata-veld per knoop verloren is gegaan. Ook dit is al voor je gedaan, dus klik op 'Antwoord verzenden' om de resultaten te zien!
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# Import nxviz
____
# Create the matrix plot: m
m = ____
# Display the plot
____
# Convert T to a matrix format: A
A = nx.to_numpy_matrix(T)
# Convert A back to the NetworkX form as a directed graph: T_conv
T_conv = nx.from_numpy_matrix(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()