CommencerCommencer gratuitement

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

Afficher le cours

Instructions

  • Importez matrix depuis nxviz.
  • Tracez le graphe T sous forme de matrice. Pour cela :
    • Créez la matrice appelée m à l’aide de la fonction nv.matrix() avec T passé en argument.
    • Affichez le tracé avec plt.show().
  • 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 category est 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()
Modifier et exécuter le code