Visualiser avec des graphiques matriciels
Il est temps d’essayer votre première méthode de visualisation de graphes « avancée » : le graphique matriciel. Pour cela, nxviz propose une fonction matrix(). Cette fonction, comme toutes les fonctions de haut niveau de l’API de nxviz, renvoie un objet axes de matplotlib qui peut être affiché avec plt.show().
nxviz est un package qui permet de visualiser des graphes de manière rationnelle. En coulisses, la fonction matrix utilise nx.to_numpy_array(G), qui renvoie la forme matricielle du graphe. Ici, chaque nœud correspond à une colonne et à une ligne, et une arête entre deux nœuds est indiquée par la valeur 1. Ce faisant, seul le métadonné weight est conservé ; toutes les autres métadonnées sont perdues, comme vous allez le vérifier à l’aide d’une instruction assert.
Une fonction correspondante, nx.from_numpy_array(A), permet de créer rapidement un graphe à partir d’un tableau NumPy. Le type de graphe par défaut est Graph() ; si vous souhaitez en faire un DiGraph(), vous devez le préciser avec l’argument nommé create_using, par exemple (nx.from_numpy_array(A, create_using=nx.DiGraph)).
Dernière remarque : matplotlib.pyplot et networkx ont déjà été importés sous les alias plt et nx, respectivement, et le graphe T a été préchargé. Pour plus de simplicité et de rapidité, nous avons sous-échantillonné seulement 100 arêtes du réseau.
Cet exercice fait partie du cours
Introduction à l’analyse de réseaux en Python
Instructions
- Importez
matrixdepuisnxviz. - Tracez le graphe
Tsous forme de graphique matriciel. Pour cela :- Créez le graphique matriciel nommé
men utilisant la fonctionnv.matrix()avecTpassé en argument. - Affichez le graphique avec
plt.show().
- Créez le graphique matriciel nommé
- Convertissez le graphe au format matriciel, puis reconvertissez-le en objet NetworkX à partir de la matrice sous forme de graphe orienté. Cela a été fait pour vous.
- Vérifiez que le champ de métadonnées
categoryest perdu pour chaque nœud. Cela a également été fait pour vous, alors cliquez sur "Soumettre la réponse" pour voir les résultats !
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# 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()