Visualizzazione con grafici a matrice
È il momento di provare il tuo primo metodo di visualizzazione "avanzato": un grafico a matrice. Per farlo, nxviz mette a disposizione la funzione matrix(). Questa funzione, come tutte le funzioni di alto livello dell'API di nxviz, restituisce un oggetto axes di matplotlib che può essere mostrato con plt.show().
nxviz è un pacchetto per visualizzare i grafi in modo razionale. Dietro le quinte, la funzione matrix utilizza nx.to_numpy_matrix(G), che restituisce la forma matriciale del grafo. Qui, ogni nodo è una colonna e una riga, e un arco tra due nodi è indicato dal valore 1. Facendo così, però, viene preservato solo il metadato weight; tutti gli altri metadati vanno persi, come verificherai usando un'istruzione assert.
La funzione corrispondente nx.from_numpy_matrix(A) consente di creare rapidamente un grafo a partire da una matrice NumPy. Il tipo di grafo predefinito è Graph(); se vuoi creare un DiGraph(), devi specificarlo usando l'argomento keyword create_using, ad esempio (nx.from_numpy_matrix(A, create_using=nx.DiGraph)).
Un'ultima nota: matplotlib.pyplot e networkx sono già stati importati rispettivamente come plt e nx, e il grafo T è stato precaricato. Per semplicità e velocità, abbiamo effettuato un sotto-campionamento di sole 100 connessioni dalla rete.
Questo esercizio fa parte del corso
Introduzione all'analisi delle reti in Python
Istruzioni dell'esercizio
- Importa
matrixdanxviz. - Rappresenta il grafo
Tcome grafico a matrice. Per farlo:- Crea il grafico a matrice chiamato
musando la funzionenv.matrix()passandoTcome argomento. - Mostra il grafico usando
plt.show().
- Crea il grafico a matrice chiamato
- Converti il grafo in formato matrice, quindi riconverti il grafo in formato NetworkX a partire dalla matrice come grafo diretto. Questo è già stato fatto per te.
- Verifica che il campo di metadati
categoryvenga perso da ciascun nodo. Anche questo è già stato fatto per te, quindi premi "Invia risposta" per vedere i risultati!
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# 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()