Visualizzazione con grafici a matrice
È il momento di provare il tuo primo metodo di visualizzazione dei grafi “avanzato”: il grafico a matrice. Per farlo, nxviz fornisce 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 visualizzato con plt.show().
nxviz è un pacchetto per visualizzare i grafi in modo razionale. Dietro le quinte, la funzione matrix utilizza nx.to_numpy_array(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 vengono persi, come verificherai usando un’istruzione assert.
La funzione corrispondente nx.from_numpy_array(A) consente di creare rapidamente un grafo a partire da un array NumPy. Il tipo di grafo predefinito è Graph(); se vuoi crearne uno di tipo DiGraph(), devi specificarlo usando l’argomento keyword create_using, ad esempio (nx.from_numpy_array(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. - Visualizza il grafico usando
plt.show().
- Crea il grafico a matrice chiamato
- Converte il grafo in formato matrice, quindi riconverti il grafo dalla matrice alla forma NetworkX come grafo orientato. Questo è già stato fatto per te.
- Verifica che il campo di metadati
categorysia stato 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_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()