Aan de slagGa gratis aan de slag

Visualiseren met matrixplots

Tijd voor je eerste "fancy" grafvisualisatie: een matrixplot. Hiervoor biedt nxviz een matrix()-functie. Deze functie, net als alle top-level API-functies van nxviz, geeft een Matplotlib-axesobject terug dat je kunt tonen met plt.show().

nxviz is een pakket om grafen op een rationele manier te visualiseren. Onder de motorkap gebruikt de matrix-functie nx.to_numpy_array(G), die de matrixvorm van de graaf teruggeeft. Hier is elke knoop één kolom en één rij, en een verbinding tussen twee knopen wordt aangegeven met de waarde 1. Daarbij blijft alleen de weight-metadata behouden; alle andere metadata gaat verloren, zoals je zult controleren met een assert-statement.

Met de bijbehorende functie nx.from_numpy_array(A) kun je snel een graaf maken op basis van een NumPy-array. Het standaard graftype is Graph(); als je er een DiGraph() van wilt maken, moet je dat opgeven met het keywordargument create_using, bijvoorbeeld (nx.from_numpy_array(A, create_using=nx.DiGraph)).

Nog één opmerking: matplotlib.pyplot en networkx zijn al geïmporteerd als respectievelijk plt en nx, en de graaf T is al ingeladen. Voor eenvoud en snelheid hebben we slechts 100 verbindingen 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 terug naar de NetworkX-vorm vanaf de matrix als gerichte graaf. Dit is al voor je gedaan.
  • Controleer dat het metadata-veld category voor elke 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_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()
Code bewerken en uitvoeren