Visualisieren mit Matrix-Plots
Es ist Zeit für deine erste „schicke“ Methode zur Graphvisualisierung: ein Matrix-Plot. Dafür stellt nxviz die Funktion matrix() bereit. Diese Funktion gibt – wie alle High-Level-API-Funktionen von nxviz – ein Matplotlib-Axes-Objekt zurück, das mit plt.show() angezeigt werden kann.
nxviz ist ein Paket, um Graphen rational zu visualisieren. Unter der Haube nutzt die Funktion matrix nx.to_numpy_matrix(G), das die Matrixform des Graphen zurückgibt. Hier ist jeder Knoten eine Spalte und eine Zeile, und eine Kante zwischen zwei Knoten wird durch den Wert 1 angezeigt. Dabei bleibt allerdings nur das Metadatum weight erhalten; alle anderen Metadaten gehen verloren – das überprüfst du mit einer assert-Anweisung.
Ein entsprechendes nx.from_numpy_matrix(A) erlaubt es, schnell einen Graphen aus einer NumPy-Matrix zu erzeugen. Der Standard-Graphtyp ist Graph(); wenn du einen DiGraph() möchtest, musst du das mit dem Schlüsselwortargument create_using angeben, z. B. (nx.from_numpy_matrix(A, create_using=nx.DiGraph)).
Noch ein Hinweis: matplotlib.pyplot und networkx wurden bereits als plt bzw. nx importiert, und der Graph T wurde vorgeladen. Der Einfachheit und Geschwindigkeit halber haben wir nur 100 Kanten aus dem Netzwerk stichprobenartig ausgewählt.
Diese Übung ist Teil des Kurses
Einstieg in die Netzwerkanalyse mit Python
Anleitung zur Übung
- Importiere
matrixausnxviz. - Zeichne den Graphen
Tals Matrix-Plot. Gehe dazu so vor:- Erstelle den Matrix-Plot
mmit der Funktionnv.matrix()und übergibTals Argument. - Zeige den Plot mit
plt.show()an.
- Erstelle den Matrix-Plot
- Wandle den Graphen in ein Matrixformat um und konvertiere ihn anschließend wieder aus der Matrix in die NetworkX-Form als gerichteten Graphen. Das wurde bereits für dich erledigt.
- Prüfe, dass das Metadatenfeld
categorybei jedem Knoten verloren geht. Auch das ist bereits für dich erledigt – klicke also auf 'Antwort senden', um die Ergebnisse zu sehen!
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# 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()