Aan de slagGa gratis aan de slag

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

Cursus bekijken

Oefeninstructies

  • Importeer matrix uit nxviz.
  • Plot de graaf T als een matrixplot. Doe dit als volgt:
    • Maak de matrixplot m met de functie nv.matrix() en geef T door als argument.
    • Toon de plot met plt.show().
  • 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()
Code bewerken en uitvoeren