Visualisering med matrisdiagram
Nu är det dags att prova din första "avancerade" grafvisualiseringsmetod: ett matrisdiagram. För detta ändamål tillhandahåller nxviz en funktion som heter matrix(). Den här funktionen, liksom alla nxviz-bibliotekets toppnivå-API-funktioner, returnerar ett matplotlib-axelobjekt som kan visas med plt.show().
nxviz är ett bibliotek för att visualisera grafer på ett strukturerat och logiskt sätt. Under huven använder matrix-funktionen nx.to_numpy_array(G), som returnerar grafens matrisform. Här representeras varje nod av en kolumn och en rad, och en kant mellan två noder anges med värdet 1. Det innebär dock att enbart weight-metadata bevaras – all övrig metadata går förlorad, vilket du kommer att kontrollera med en assert-sats.
Med den motsvarande funktionen nx.from_numpy_array(A) kan du snabbt skapa en graf från en NumPy-array. Standardgraftypen är Graph(); om du vill skapa en DiGraph() måste det anges med nyckelordsargumentet create_using, till exempel (nx.from_numpy_array(A, create_using=nx.DiGraph)).
Slutligen: matplotlib.pyplot och networkx har redan importerats som plt respektive nx, och grafen T är förinläst. För enkelhetens skull har vi samplet ned till enbart 100 kanter från nätverket.
Den här övningen är en del av kursen
Introduktion till nätverksanalys i Python
Övningsinstruktioner
- Importera
matrixfrånnxviz. - Plotta grafen
Tsom ett matrisdiagram. Gör så här:- Skapa matrisdiagrammet med namnet
mmed hjälp av funktionennv.matrix()och skicka inTsom argument. - Visa diagrammet med
plt.show().
- Skapa matrisdiagrammet med namnet
- Konvertera grafen till matrisformat och konvertera den sedan tillbaka till NetworkX-form som en riktad graf. Det här steget är redan gjort åt dig.
- Kontrollera att metadatafältet
categoryhar gått förlorat från varje nod. Det här är också redan gjort åt dig – klicka på 'Skicka in svar' för att se resultatet!
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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()