Visualiser avec des matrices
Il est temps d’essayer votre première méthode de visualisation de graphe « avancée » : la représentation sous forme de matrice. 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 permettant de visualiser des graphes de manière rationnelle. En coulisses, la fonction matrix utilise nx.to_numpy_matrix(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, toutefois, seul le métadonné weight est conservé ; toutes les autres métadonnées sont perdues, comme vous allez le vérifier avec une instruction assert.
La fonction correspondante nx.from_numpy_matrix(A) permet de créer rapidement un graphe à partir d’une matrice NumPy. Le type de graphe par défaut est Graph() ; si vous souhaitez en faire un DiGraph(), il faut le préciser via l’argument nommé create_using, par exemple (nx.from_numpy_matrix(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 matrice. Pour cela :- Créez la matrice appelée
mà l’aide de la fonctionnv.matrix()avecTpassé en argument. - Affichez le tracé avec
plt.show().
- Créez la matrice appelée
- Convertissez le graphe en format matriciel, puis reconvertissez la matrice au format NetworkX 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, donc 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_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()