Les réseaux sont “l’autre” espace géographique, souvent négligés dans les approches classiques trop focalisées sur l’espace topographique des étendues euclidiennes des surfaces projetées du globe. Dans cet exercice, nous allons examiner comment les réseaux peuvent être formalisés sous formes de données informatiques et comment ces dernières peuvent être analysés visuellement.

La notion mathématique de graphe, vue en cours, est importante à garder à l’esprit.

Songez aussi que du point de vue réseau, tout espace, y compris celui d’un texte, peut être traité comme un espace géographique. Si vous vous intéressez particulièrement à la représentation des flux (migration, matières premières, énergie etc.) voir aussi: “Visualisation de flux géographiques” (PDF, 10MB).

Quelques exemples

The Valaisan mobility network
Exemple 1: Un réseau de mobilité. Voir l’entrée A Valaisan Mobility Network Pour une explication plus détaillée.
Stockholm, ambassade suisse, 1928-1932, réseau sémantique
Exemple 2: Réseau de cooccurrence des lemmes les plus fréquents dans les rapports de l’ambassade de Stockholm, 1928-1932. Seuls les lemmes politiquement signifiants sont conservés (excluant,, e.g. « année » or « voir »). Disposition Fruchterman-Reingold, poids des arrêtes: fréquence de cooccurrence des lemmes; taille des cercles proportionnelle à la fréquence des lemmes. Le socialisme et les mouvements de la classe ouvrière sont des sujets particulièrement importants durant cette période.
Who voted for whom in the Wikipédia sysops elections ?
Exemple 3: Le réseau de votations dans le cadre d’élections de sys_ops dans le Wikipédia francophone. Voir l’article “La réalité c’est moi” – Power Structures in the French Wikipedia pour plus de détails.

Analyse visuelle avec Cytoscape

Vous aurez besoin d’un logiciel pour créer et visualiser des réseaux. Ici, nous allons utiliser Cytoscape, développé par des biologistes pour visualiser en première ligne les réseaux d’interactions entre molécules. Il peut cependant être utilisé pour analyser n’importe quel réseau, comme les réseaux de mobilité, les réseaux politiques ou les réseaux sémantiques.

Si vous souhaitez jeter un coup d’œil à un logiciel alternatif à Cytoscape, découvrez par exemple Gephi. Ce dernier n’a cependant plus été mis à jour depuis sa version 0.9.2 parue en 2017.

Installation

Si ce n’est pas déjà fait, installez Cytoscape. Pour cela, téléchargez la dernière version de Cytoscape pour votre système d’exploitation. Puis lancez le script d’installation (généralement, cela se fait par un double-click sur l’icône du programme d’installation).

Ouvrez le programme.

Créez un nouveau réseau

Ajouter des nœuds

Pour ajouter un nœud, cliquez dans l’interface d’édition avec le bouton droit de la souris et choisissez Add > Node.

Cliquez sur le nœud pour éditer son nom dans la Node Table. Notez que Cytoscape comporte d’office deux attributs pour chaque nœud:

  • shared_name : l’identifiant “interne”, qui doit être unique (aucun autre noeud ne peut avoir le même shared_name) pour chaque nœud et ne doit pas comporter de caractères spéciaux (.-;?! etc.). Il est utilisé notamment dans la liste des liens (edges). Cytoscape attribue automatiquement un shared_name à chaque nœud et vous pouvez le laisser tel quel.
  • name: le nom qui s’affichera dans la représentation graphique.

Créez plusieurs nœuds représentant par exemple des lieux que vous fréquentez, des concepts géographiques ou des personnes de votre entourage.

Cliquez sur le bouton + pour ajouter une colonne à la table des nœuds. Ceci ajoute un attribut à chaque nœud. Comme dans un SIG – nous l’avons vu en cours – vous devez déterminer le type de valeur que peut stocker ce nouvel attribut. Pour l’exercice, choisissez le type string (chaîne de caractères).

Ajoutez des valeurs aux attributs pour chaque ligne représentant les attributs d’un nœud. :

Comme dans un SIG, ces attributs peuvent être mappés sur des variables visuelles. Faites un mapping discret (catégoriel) de votre attribut textuel en vous aidant de l’illustration suivante:

Ajouter des liens

Cliquez sur un nœud pour ajouter un lien partant de ce nœud

Connectez les nœuds de votre choix

Comme le nœuds, les liens peuvent avoir des attributs. Ajoutez deux colonnes de type integer (nombre entier) à la edge table. Sélectionnez un lien pour donner des valeurs à ces attributs:

Mappez une des deux variables sur l’épaisseur des traits représentant les liens en vous aidant de l’illustration suivante:

Changez l’agencement (layout)

Si nous voulons que la longueur des liens – c’est-à-dire la distance entre les nœuds – reflète une valeur d’attribut rattachée aux liens (par exemple le “temps de trajet”), il est nécessaire de changer d’agencement. Les agencements edge-weighted prennent en compte les valeurs d’attributs rattachées aux liens. Les agencements force-directed, en particulier, éloigneront les nœuds séparés par des liens forts (valeurs d’attributs élevées):

Aucun de ces agencements ne reflétera exactement les valeurs de l’attribut de lien, en d’autres mots, il n’y aura pas d’analogie linéaire exacte entre la valeur de l’attribut et la longueur du lien. Ceci pour une raison simple: il est impossible, par exemple, de construire un triangle avec des longueurs de liens A-B [60], B-C [30] et C-A [100]. l’algorithme se trouverait dans une situation incalculable:

Or, il est parfaitement possible de donner des valeurs 60, 30, et 100 à un attribut des trois liens en question. De telles situations adviennent souvent dans un réseau réel, comme celui d’un temps de parcours entre les gares d’un réseau ferré. Sans parler d’autres cas d’incalculabilité, lorsque plus de trois nœuds sont tous reliés entre eux. Chaque algorithme essaie donc de faire au mieux et prend les valeurs d’attribut des liens comme indicatives plutôt que déterminantes de longueurs de traits strictes.

Télécharger les données

Dans la plupart des cas d’analyses de réseaux géographiques, vous n’aurez pas à créez un réseau à partir de rien, mais allez le constituer à partir de données existantes. Nous avons vu les divers formats de stockage de données de réseaux. Pour cet exercice, plusieurs données son à votre disposition pour tester le logiciel. Il y a deux possibilités:

  • Plus difficile: Téléchargez un set de données de votre choix en format GML depuis le site GitHub de Gephi.
  • Plus facile: Téléchargez le fichier unine_exercice2.zip depuis le site du cours. Décompressez le contenu de l’archive zip dans un dossier de votre choix. Vous trouverez 3 fichiers:
    • plz6_edges.csv : [arrêtes] données sur la pendularité entre des régions postales, c’est-à-dire le nombre de déplacements.
    • plz6_nodes.csv : [nœuds] données sur la pendularité entre des régions postales, c’est-à-dire les lieux (régions postales).
    • lesmiserables.gml: compte de cooccurrence des personnages du roman éponyme de Victor Hugo dans les chapitres du roman

Analyse du contenu des fichiers

Il est impossible de bien comprendre ce que vous faites si vous ignorez la structure de vos données. Regarder à l’intérieur d’un fichier informatique permet souvent de le démystifier et de bien mesurer les attentes quant aux résultats de son analyse. La meilleure approche pour voir les données brutes est un éditeur de texte simple comme Visual Studio Code (le choix d’un grand nombre de programmeurs actuels). Sur macOS, je recommande vivement son installation, vu que ce système d’exploitation n’a pas d’éditeur de texte simple installé d’office. Sur Windows, vous pouvez utiliser notepad (installé d’office, mais ne disposant pas coloration syntaxique).

  • Dans le texte brut des fichiers, localisez les nœuds (nodes) du graphe.
  • Localisez les liens (edges).
  • Quelles variables associées aux nœuds voyez vous?
  • Quelles variables associées aux liens voyez-vous?
Cytoscape_GML
Exemple de contenu d’un fichier GML (extrait)

Charger les données dans Cytoscape

Si vous avez téléchargé les données de l’exercice, chargez les données GML et CSV. Si vous avez trouvé vos propres données, choisissez la marche à suivre adaptée en fonction du type de vos données.

Données GML

Pour importer un fichier GML, il suffit en principe de le glisser déposer dans la zone de l’interface prévue pour lister les divers réseaux (entourée en rouge):

Une autre manière de procéder est de cliquer sur le bouton “Import Network from File“.

import_network_from_file

Si vous choisissez cette méthode, une boît de dialogue s’ouvre. Naviguez vers le dossier où vous avez décompressé les données et sélectionnez le fichier lesmiserables.gml (ou un autre fichier gml).

Cliquez sur OK dans la boîte de dialogue qui suit.

Le réseau devrait s’afficher sur votre écran.

Données CSV

import_network_from_file

Cliquez sur le bouton “Import Network from File“.

Dans la boite de dialogue, naviguez vers le dossier où vous avez décompressé les données et choisissez le fichier plz6_edges.csv.

Lorsque vous aurez ouvert le fichier, une boîte de dialogue s’ouvre. :

Dites au logiciel quelle colonne est origine (source) et laquelle la destination (Target) des arrêtes.

Cliquez sur OK dans la boîte de dialogue. Le réseau devrait s’afficher sur votre écran. Mais les nœuds sont dépourvus de noms. Il vous sera difficile d’interpréter les résultats de votre analyse dans ces conditions. Nous allons ajouter des variables aux nœuds. Pour cela, cliquez sur le bouton “Import Table from File” et importez, cette fois, plz6_nodes.csv.

This image has an empty alt attribute; its file name is image-1.png

Pour cela, cliquez sur le bouton “Import Table from File” et importez, cette fois, plz6_nodes.csv.

Dans la boîte de dialogue qui s’ouvre, vous voyez qu’il es possible d’associer les valeurs d’attributs des nœuds à un réseau existant. C’est exactement ce que vous cherchez à faire. Notez le symbole de clef à côté du nom de valeur “id“. Cela signifie que le logiciel va utiliser cette variable comme “clef de jointure”. Dans ce cas précis, les chiffres des colonnes from et to de la table plz6_edges correspondent en effet à ces chiffres d’identification. Si le logiciel rèpère mal la clef de jointure (il aurait pu, par exemple, prendre la colonne PLZ_simple), vous avez la possibilité de désigner manuellement la colonne des identifiants.

À ce stade, vous devriez voir un réseau de nœuds annotés sur votre écran.

Métriques réseau

Calculez les valeurs de degré entrant et sortant, la betweenness, la shortest path length etc.

Demandez à Cytoscape d’analyser un réseau (plz ou lesmiserables ou un autre que vous auriez importé):

Cytsocape_Analyze Network

Votre réseau est-il directionnel ou non-directionnel? Sélectionnez l’option appropriée avant l’analyse.

Cytoscape_Directionnal

Le processus d’analyse ajoute des variables de métrique réseau aux nœuds et aux arrêtes. Vous pourrez les exploiter par la suite, notamment en les liant à des représentations visuelles. Une boite de dialogue des résultats globaux de l’analyse devrait aussi s’ouvrir lorsque vous cliquez sur OK

Faites une analyse globale de votre réseau

La boîte de dialogue vous permet d’explorer la structure générale de votre réseau. Comment interprétez-vous, par exemple, la distribution (histogramme) des degrés sortants (out-degree)?

Vous pouvez aussi observer les corrélations entre diverses métriques. Dans le menu, choisissez : Tools > NetworkAnalyzer > Network Analysis > Plot Parameters…

Tentez d’expliquer ces corrélations. Par exemple: comment expliquez vous la corrélation entre Degree et AverageShortestPathLength de la figure ci-dessous?

Visualisez les attributs de nœuds et d’arrêtes

Dans le panneau de gauche, sélectionnez l’onglet supérieur Style et l’onglet inférieur Node. Liez la métrique réseau BetweennessCentrality à la taille des cercles (tip: “Lock node width and height“):

Cytoscape_Visualise

Il est possible de peaufiner ce mapping en double-cliquant sur le mini-graphique. Mappez la taille des cercles entre 10 et 100:

Cytoscape_map_continupus

Testez d’autres paramètres de mapping disponibles pour les nœuds et les arrêtes (onglet inférieur Edge).

Découvrez le fonctionnement du logiciel

Une représentation possible des Misérables. La taille des nœuds représente la betweennness non directionnelle. Que vous disent ces tailles sur les personnages?

Apprenez à découvrir d’autres fonctionnements de base du logiciel par vos propres moyens. Les interfaces de logiciels changent souvent, en effet, il ne faut perdre trop de temps à en “apprendre” le fonctionnement par cœur. Une compétence bien plus essentielle en informatique est de savoir oser se débrouiller face à l’inconnu en développant son intuition et en consultant la documentation du logiciel.

Changez l’apparence des nœuds, des arrêtes et de l’arrière fonds de la visualisation selon vos souhaites. Faites en sorte que les noms de vos nœuds s’affichent à côté ou à l’intérieur des cercles qui les représentent.

Changez l’agencement spatial

Choisissez un agencement spatial. Ici Edge-weighted Force directed avec option weight (le poids des liens est pris en compte):

Cytoscape_Layout

L’exécution de l’algorithme peut durer quelques secondes. Testez ensuite Edge-weighted Spring Embedded, option (none).

Cytoscape_NetworkExample

Analysez et commentez les résultats:

  • Combien de nœuds?
  • Combien de liens?
  • Combien de composantes?
  • Prenez un nœud au hasard et déterminez
    • Son degré entrant
    • Son degré sortant

Nettoyez le réseau

Il arrive qu’un réseau affiche des liens ou des nœuds qui ne vous intéressent pas. Vous verrez par exemple des nœuds ayant un lien avec eux-mêmes; cela peut arriver lorsque vous analysez les pendulaires et que certains parmi ces derniers travaillent dans leur commune de domicile. Cette information est importante mais peut surcharger la visualisation d’un réseau. Pour l’enlever, il suffit d’éliminer les self-loops:

Cytoscape_RemoveLoops

Re-testez des algorithmes d’agencement avec le réseau ainsi nettoyé.

Sélectionnez une partie du réseau et examinez leurs attributs (tip: Show selected):

Cytoscape_ExploreAttributes

Sélectionnez une partie du réseau et exportez-la comme un nouveau réseau:

Recalculez les métriques réseau et refaites des agencements spatiaux.

Déplacez les nœuds manuellement:

Cytoscape_DiplaceManually

Testez l’option “Bundle edges“:

Cytoscape_BundleEdges

Que fait cette option? Quels sont ses avantages cartographiques?

Interprétez vos observations en termes géographiques. Que peut-on dire du territoire à partir de vos observations, y compris si le territoire est un livre?

Exportez la visualisation

L’affichage dans Cytoscape peut être satisfaisant mais pour ajouter une légende, des annotations et autres éléments graphiques, il vaut mieux travailler dans un logiciel dédié au dessin vectoriel, comme Inkscape ou Illustrator. Ces derniers ne peuvent pas ouvrir de fichiers .gml ni le format natif de Cytoscape (.cys). Ils lisent par contre le format svg ou pdf; Cytoscape est capable d’exporter dans ces formats.

Exportez votre réseau en format SVG

Et importez l’image dans le logiciel de dessin vectoriel de votre choix pour l’éditer:

Une chose dont Cytoscape est incapable, notamment, est d’utiliser d’autres moyens graphiques que des flèches – peu élégantes – pour la représentation de liens directionnels. Un de ces moyens peut être une épaisseur de ligne progressive, plutôt qu’uniforme, dans le paramètre “profil” de contour dans Illustrator.

Si vous utilisez Illustrator, sélectionnez simultanément tous les liens de votre graphe et appliquez un contour profilé triangulaire.

Exercices Optionnels

Consultez la chaîne Youtube de Cytoscape pour découvrir d’autres fonctionnalités.

La ligne de commande de Cytoscape

Cytoscape possède une ligne de commande pour les tâche répétitives. On peut la trouver à des endroits différents, et sous des noms différents en fonction de la version de Cytoscape:

Cyroscape_CommandLineDialog

Dans le champ Command de la fenêtre qui s’affiche écrivez en une seule ligne en changeant le chemin vers votre dossier, votre fichier et vos noms de colonne :

network import file 
file="/votre/dossier/wikitractatus.xls" 
indexColumnSourceInteraction=1 
indexColumnTargetInteraction=2 
firstRowAsColumnNames=true

et pressez sur la touche Retour de votre clavier.

Le réseau devrait s’afficher sur votre écran

Fermez la fenêtre “Command line”.

  •  
  •  
  •  
  •  
  •