écosophe # résographe - Tag - R http://blogperso.univ-rennes1.fr/eric.collias/index.php/ blog d'Éric Collias, professionnel en écologie et sciences humaines appliquées à l'aménagement, intervenant an sein du master Espaces Ruraux et PériUrbanisation (ERPUR) de l'UFR Sciences de la Vie et de l'Environnement de l'Université de Rennes 1 fr Mon, 24 Sep 2018 21:46:10 +0200 http://blogs.law.harvard.edu/tech/rss Dotclear graphe avec gephi & igraph avec R http://blogperso.univ-rennes1.fr/eric.collias/index.php/post/2016/06/23/graphe-avec-gephi-igraph-avec-R urn:md5:2e608c695a57600c2511d6fc1ae7754e Thu, 23 Jun 2016 20:30:00 +0200 Eric Collias outillage circuitGephigrapheIgraphRrelations <code><code><code><p><img title="TVB_groupe1.tiff, juin 2016" style="margin: 0 auto; display: block;" alt="" src="http://blogperso.univ-rennes1.fr/eric.collias/public/TVB_groupe1.tiff" />soit un graphe réalisé par les étudiants du master ERPUR 2015-16 lors de leur analyse de 5 entretiens avec les acteurs de la TVB d'une commune périurbaine d'où sont extraits un indice des relations entre ces acteurs de 0 à 3 et dont l'importance (degré) est illustrée par la taille des nœuds, des polices et des liens</p> <p><img title="TVB_groupe1.jpg, juin 2016" style="margin: 0 auto; display: block;" alt="" src="http://blogperso.univ-rennes1.fr/eric.collias/public/TVB_groupe1.jpg" /></p> <p>voici le fichier des acteurs</p> <p>Id&nbsp;&nbsp;&nbsp; Label<br />1&nbsp;&nbsp;&nbsp; Syndicat mixte<br />2&nbsp;&nbsp;&nbsp; Conseil Regional<br />3&nbsp;&nbsp;&nbsp; DREAL Bretagne<br />4&nbsp;&nbsp;&nbsp; Communaute de Communes<br />5&nbsp;&nbsp;&nbsp; Elus<br />6&nbsp;&nbsp;&nbsp; Chambre dagriculture<br />7&nbsp;&nbsp;&nbsp; Camp militaire<br />8&nbsp;&nbsp;&nbsp; Cabinet specialise<br />9&nbsp;&nbsp;&nbsp; Conseil departemental<br />10&nbsp;&nbsp;&nbsp; Habitants<br />11&nbsp;&nbsp;&nbsp; Agriculteurs<br />12&nbsp;&nbsp;&nbsp; Agence de l'eau<br />13&nbsp;&nbsp;&nbsp; Associations naturalistes<br />14&nbsp;&nbsp;&nbsp; Monde scientifique</p> <p>et voici le fichier de leurs relations (source-target) établi à travers le traitement des différents entretiens<br />&nbsp;(labels) avec les poids de celles-ci</p> <p>Source&nbsp;&nbsp;&nbsp; Target&nbsp;&nbsp;&nbsp; Type&nbsp;&nbsp;&nbsp; Id&nbsp;&nbsp;&nbsp; Label&nbsp;&nbsp;&nbsp; Weight<br />1&nbsp;&nbsp;&nbsp; 8&nbsp;&nbsp;&nbsp; Undirected&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp; ent_Syndicat mixte&nbsp;&nbsp;&nbsp; 1.0<br />1&nbsp;&nbsp;&nbsp; 9&nbsp;&nbsp;&nbsp; Undirected&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp; ent_Syndicat mixte&nbsp;&nbsp;&nbsp; 1.0<br />1&nbsp;&nbsp;&nbsp; 10&nbsp;&nbsp;&nbsp; Undirected&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp; ent_Syndicat mixte&nbsp;&nbsp;&nbsp; 1.0<br />1&nbsp;&nbsp;&nbsp; 5&nbsp;&nbsp;&nbsp; Undirected&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp; ent_Syndicat mixte&nbsp;&nbsp;&nbsp; 3.0<br />1&nbsp;&nbsp;&nbsp; 11&nbsp;&nbsp;&nbsp; Undirected&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp; ent_Syndicat mixte&nbsp;&nbsp;&nbsp; 3.0<br />2&nbsp;&nbsp;&nbsp; 3&nbsp;&nbsp;&nbsp; Undirected&nbsp;&nbsp;&nbsp; 2&nbsp;&nbsp;&nbsp; ent_Conseil Regional&nbsp;&nbsp;&nbsp; 3.0<br />2&nbsp;&nbsp;&nbsp; 11&nbsp;&nbsp;&nbsp; Undirected&nbsp;&nbsp;&nbsp; 2&nbsp;&nbsp;&nbsp; ent_Conseil Regional&nbsp;&nbsp;&nbsp; 1.0<br />2&nbsp;&nbsp;&nbsp; 9&nbsp;&nbsp;&nbsp; Undirected&nbsp;&nbsp;&nbsp; 2&nbsp;&nbsp;&nbsp; ent_Conseil Regional&nbsp;&nbsp;&nbsp; 1.0<br />2&nbsp;&nbsp;&nbsp; 5&nbsp;&nbsp;&nbsp; Undirected&nbsp;&nbsp;&nbsp; 2&nbsp;&nbsp;&nbsp; ent_Conseil Regional&nbsp;&nbsp;&nbsp; 1.0<br />2&nbsp;&nbsp;&nbsp; 6&nbsp;&nbsp;&nbsp; Undirected&nbsp;&nbsp;&nbsp; 2&nbsp;&nbsp;&nbsp; ent_Conseil Regional&nbsp;&nbsp;&nbsp; 1.0<br />2&nbsp;&nbsp;&nbsp; 12&nbsp;&nbsp;&nbsp; Undirected&nbsp;&nbsp;&nbsp; 2&nbsp;&nbsp;&nbsp; ent_Conseil Regional&nbsp;&nbsp;&nbsp; 1.0<br />2&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp; Undirected&nbsp;&nbsp;&nbsp; 2&nbsp;&nbsp;&nbsp; ent_Conseil Regional&nbsp;&nbsp;&nbsp; 1.0<br />2&nbsp;&nbsp;&nbsp; 13&nbsp;&nbsp;&nbsp; Undirected&nbsp;&nbsp;&nbsp; 2&nbsp;&nbsp;&nbsp; ent_Conseil Regional&nbsp;&nbsp;&nbsp; 1.0<br />5&nbsp;&nbsp;&nbsp; 10&nbsp;&nbsp;&nbsp; Undirected&nbsp;&nbsp;&nbsp; 4&nbsp;&nbsp;&nbsp; ent_Maire&nbsp;&nbsp;&nbsp; 3.0<br />5&nbsp;&nbsp;&nbsp; 11&nbsp;&nbsp;&nbsp; Undirected&nbsp;&nbsp;&nbsp; 4&nbsp;&nbsp;&nbsp; ent_Maire&nbsp;&nbsp;&nbsp; 3.0<br />5&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp; Undirected&nbsp;&nbsp;&nbsp; 4&nbsp;&nbsp;&nbsp; ent_Maire&nbsp;&nbsp;&nbsp; 1.0<br />5&nbsp;&nbsp;&nbsp; 9&nbsp;&nbsp;&nbsp; Undirected&nbsp;&nbsp;&nbsp; 4&nbsp;&nbsp;&nbsp; ent_Maire&nbsp;&nbsp;&nbsp; 1.0<br />5&nbsp;&nbsp;&nbsp; 8&nbsp;&nbsp;&nbsp; Undirected&nbsp;&nbsp;&nbsp; 4&nbsp;&nbsp;&nbsp; ent_Maire&nbsp;&nbsp; 3.0<br />5&nbsp;&nbsp;&nbsp; 4&nbsp;&nbsp;&nbsp; Undirected&nbsp;&nbsp;&nbsp; 4&nbsp;&nbsp;&nbsp; ent_Maire&nbsp;&nbsp; 1.0<br />5&nbsp;&nbsp;&nbsp; 10&nbsp;&nbsp;&nbsp; Undirected&nbsp;&nbsp;&nbsp; 5&nbsp;&nbsp;&nbsp; ent_Adjoint Mairie&nbsp;&nbsp; 3.0<br />5&nbsp;&nbsp;&nbsp; 11&nbsp;&nbsp;&nbsp; Undirected&nbsp;&nbsp;&nbsp; 5&nbsp;&nbsp;&nbsp; ent_Adjoint Mairie&nbsp;&nbsp;&nbsp;&nbsp; 3.0<br />5&nbsp;&nbsp;&nbsp; 12&nbsp;&nbsp;&nbsp; Undirected&nbsp;&nbsp;&nbsp; 5&nbsp;&nbsp;&nbsp; ent_Adjoint Mairie&nbsp;&nbsp;&nbsp; 3.0<br />5&nbsp;&nbsp;&nbsp; 5&nbsp;&nbsp;&nbsp; Undirected&nbsp;&nbsp;&nbsp; 5&nbsp;&nbsp;&nbsp; ent_Adjoint Mairie&nbsp;&nbsp;&nbsp; 3.0<br />5&nbsp;&nbsp;&nbsp; 4&nbsp;&nbsp;&nbsp; Undirected&nbsp;&nbsp;&nbsp; 5&nbsp;&nbsp;&nbsp; ent_Adjoint Mairie&nbsp;&nbsp;&nbsp; 1.0<br />3&nbsp;&nbsp;&nbsp; 13&nbsp;&nbsp;&nbsp; Undirected&nbsp;&nbsp;&nbsp; 3&nbsp;&nbsp;&nbsp; ent_DREAL Bretagne&nbsp;&nbsp;&nbsp; 3.0<br />3&nbsp;&nbsp;&nbsp; 14&nbsp;&nbsp;&nbsp; Undirected&nbsp;&nbsp;&nbsp; 3&nbsp;&nbsp;&nbsp; ent_DREAL Bretagne&nbsp;&nbsp;&nbsp; 1.0<br />3&nbsp;&nbsp;&nbsp; 11&nbsp;&nbsp;&nbsp; Undirected&nbsp;&nbsp;&nbsp; 3&nbsp;&nbsp;&nbsp; ent_DREAL Bretagne&nbsp;&nbsp;&nbsp; 3.0<br />3&nbsp;&nbsp;&nbsp; 5&nbsp;&nbsp;&nbsp; Undirected&nbsp;&nbsp;&nbsp; 3&nbsp;&nbsp;&nbsp; ent_DREAL Bretagne&nbsp;&nbsp;&nbsp; 3.0<br />3&nbsp;&nbsp;&nbsp; 4&nbsp;&nbsp;&nbsp; Undirected&nbsp;&nbsp;&nbsp; 3&nbsp;&nbsp;&nbsp; ent_DREAL Bretagne&nbsp;&nbsp;&nbsp; 3.0<br />3&nbsp;&nbsp;&nbsp; 12&nbsp;&nbsp;&nbsp; Undirected&nbsp;&nbsp;&nbsp; 3&nbsp;&nbsp;&nbsp; ent_DREAL Bretagne&nbsp;&nbsp;&nbsp; 3.0</p> il est possible depuis Gephi d'exporter le réseau ainsi réalisé sous deux formats importables ensuite dans R : le format .net (pajek) et le format .gml<br /><br />dans R, <br />#ouvrir igraph<br />&gt; library(igraph)<br /><br />#ouvrir un graphe exporté en pajek par gephi<br />&gt; g &lt;- read.graph("TVB.net", format="pajek")<br />&gt; plot(g)<br /><br />ou bien<br /><br />#ouvrir un graphe exporté en gml par gephi<br />&gt; g &lt;- read.graph("TVB.gml", format="gml")<br />&gt; plot(g)<br /><br />#selon les besoins, il est possible de masquer les labels des liens de manière définitive<br />&gt; E(g)$label &lt;- NA<br />&gt; plot(g)<br /><br /># fixer la taille des nœuds en fonction des liens<br />&gt; deg &lt;- degree(g, mode="all")<br />&gt; V(g)$size &lt;- deg*2<br />&gt; plot(g)<br /><br /><br /><br /><img title="igraph.jpg, juin 2016" style="margin: 0 auto; display: block;" alt="" src="http://blogperso.univ-rennes1.fr/eric.collias/public/igraph.jpg" width="617" height="637" />#pour afficher les id<br />&gt;plot(g,vertex.label=V(g)$id,)<br /><br /><br /><img title="igraph_id.jpg, juin 2016" style="margin: 0 auto; display: block;" alt="" src="http://blogperso.univ-rennes1.fr/eric.collias/public/igraph_id.jpg" /><br /><br /># détection des communautés sur la base de la centralité d'intermédiarité (Newman-Girvan) : la centralité d'intermédiarité («&nbsp;betweenness centrality&nbsp;») compte le nombre de fois où un nœud agit comme un point de passage le long du plus court chemin entre deux autres nœuds (= intermédiaire)<br />&gt; ceb &lt;- cluster_edge_betweenness(g) <br />&gt; dendPlot(ceb, mode="hclust")<br /><br /><img title="cluster_edge_betweeness2.jpg, juin 2016" style="margin: 0 auto; display: block;" alt="" src="http://blogperso.univ-rennes1.fr/eric.collias/public/cluster_edge_betweeness2.jpg" />#représentation des résultats du cluster d'intermédiarité<br />&gt; plot(ceb,g)<br /><br /><img title="plot_edge_betweeness.jpg, juin 2016" style="margin: 0 auto; display: block;" alt="" src="http://blogperso.univ-rennes1.fr/eric.collias/public/plot_edge_betweeness.jpg" /><br /><br /><br />#pour représenter les subdivisions denses du graphe : optimisation de la modularité qui mesure la qualité d'un partitionnement des nœuds d'un réseau en communautés (parties du graphe les plus connectées entre elles, les ensembles qui ont une forte densité interne et une faible densité externe)<br />&gt;cfg &lt;- cluster_fast_greedy(as.undirected(g))<br />&gt; dendPlot(cfg, mode="hclust")<br /><br /><img title="clust_communaute__greed_opt_modularity.jpg, juin 2016" style="margin: 0 auto; display: block;" alt="" src="http://blogperso.univ-rennes1.fr/eric.collias/public/clust_communaute__greed_opt_modularity.jpg" /><br />#représentation des résultats du cluster de modularité<br />&gt;plot(cfg, as.undirected(g))<br /><br /><img title="subdiv_denses.jpg, juin 2016" style="margin: 0 auto; display: block;" alt="" src="http://blogperso.univ-rennes1.fr/eric.collias/public/subdiv_denses.jpg" /><br />il est possible de revenir sur Gephi et d'ouvrir la fenêtre statistiques pour calculer la modularité puis l'employer comme paramètre supplémentaire de représentation du graphe : couleurs des nœuds selon la modularité afin d'identifier les trois communautés, et tailles des nœuds selon le nombre de liens<br /><br />Parameters:<br />Randomize: On<br />Use edge weights: On<br />Resolution: 1.0<br />Results:<br />Modularity: 0,221<br />Modularity with resolution: 0,221<br />Number of Communities: 3<br /><br /><img title="gephi_modularite_.png, juin 2016" style="margin: 0 auto; display: block;" alt="" src="http://blogperso.univ-rennes1.fr/eric.collias/public/gephi_modularite_.png" /><br />#un autre algorithme permet de calculer la modularité, basé sur la méthode de Louvain (1), méthode ascendante et multi-niveau.<br />&gt; cluster_louvain(g)<br />IGRAPH clustering multi level, groups: 3, mod: 0.23<br />+ groups:<br />&nbsp; $`1`<br />&nbsp; [1] 7<br />&nbsp; <br />&nbsp; $`2`<br />&nbsp; [1]&nbsp; 1&nbsp; 5&nbsp; 8&nbsp; 9 10 11<br />&nbsp; <br />&nbsp; $`3`<br />&nbsp; [1]&nbsp; 2&nbsp; 3&nbsp; 4&nbsp; 6 12 13 14<br />&nbsp; <br />&gt; groups &lt;- membership(cluster_louvain(g))<br />&gt; communities &lt;- communities(cluster_louvain(g))<br />&gt; plot.igraph(g, mark.groups = communities)<br /><img title="cluster_louvain.png, juin 2016" style="margin: 0 auto; display: block;" alt="" src="http://blogperso.univ-rennes1.fr/eric.collias/public/cluster_louvain.png" /><br /><br />On voit qu'avec cet algorithme, la position des agriculteurs a changé, il est donc préférable de tester les méthodes et de les choisir en fonction de nos hypothèses de travail.<br /><br />Par ailleurs, avant de passer à l'interprétation de ces graphes, la question que l'on doit se poser est relative à la qualité de la collecte des informations traitées : le protocole basé sur l'analyse des entretiens, le nombre de ceux-ci, hormis toute autre source de données textuelles ou d'observation, seront-il suffisant pour appuyer notre analyse ? <br /><br />biblio : <br />[1] V. Blondel, J.-L. Guillaume, R. Lambiotte, et E. Lefebvre, « Fast unfolding of communities in large networks », Journal of Statistical Mechanics, vol. 2008, no 10, sept. 2008.<br /><br />sources :<br /><a href="http://kateto.net/">http://kateto.net/</a><br /><a href="https://fr.wikipedia.org/wiki/Centralit%C3%A9">https://fr.wikipedia.org/wiki/Centralité</a><br /><a href="https://fr.wikipedia.org/wiki/Modularit%C3%A9_(r%C3%A9seaux)">https://fr.wikipedia.org/wiki/Modularité</a><br /><br /></code></code></code> http://blogperso.univ-rennes1.fr/eric.collias/index.php/post/2016/06/23/graphe-avec-gephi-igraph-avec-R#comment-form http://blogperso.univ-rennes1.fr/eric.collias/index.php/post/2016/06/23/graphe-avec-gephi-igraph-avec-R#comment-form http://blogperso.univ-rennes1.fr/eric.collias/index.php/feed/atom/comments/6090