Attributs du graphe

Le package igraph permet de gérer élégamment les attributs des sommets d’un graphe. Il suffit de lui fournir deux data frames, un avec les arêtes (arcs dans le cas dirigé, mais ça se présente de la même manière), l’autre (facultatif) avec les sommets. Il saisit alors les deux premières colonnes du data frame des arcs pour créer les sommets et les arcs, et la première colonne du data frame des sommets, pour créer les sommets qui n’auraient aucune connexion (et n’apparaissent dès lors pas dans le premier data frame). Toutes les colonnes qui suivent, dans les autres data frame, sont alors stockées comme attributs dans le graphe. Il n’y a dès lors plus qu’un objet à manipuler et enregistrer et travailler.
Pour le code complet utilisant les data frames, c’est par ici.
Le graphe est sauvegardé dans g. Avec la commande suivante, je lui demande de me décrire la structure de l’objet (tel qu’elle est enregistrée).
> summary(g)
Vertices: 38 
Edges: 79 
Directed: TRUE 
No graph attributes.
Vertex attributes: name, Freq, auteur, description, statusesCount, followersCount, friendsCount, nom, created, location, id, d.in, d.out.
Edge attributes: text, created, id, weight.
On observe que le graphe (voir tout en bas pour le résultat final) comporte 38 sommets et 79 arêtes (densité = 5.6 %), est dirigé, ne possède pas d’attributs de graphe (par exemple un nom, ou un layout pour la sortie graphique), et possède de nombreux attributs pour chaque sommet et chaque arête.
On l’obtient avec la fonction graph.data.frame( ).
Un détail des deux data frames utilisés : les arêtes…
> str(relations)
‘data.frame’: 143 obs. of  5 variables:
 $ auteur : chr  « lamagouille » « lamagouille » « genevey » « buercher » …
 $ mention: chr  « rtsinfoplus » « rtsinfoplus » « c_h_a_p_o » « mariebender » …
 $ text   : chr  « RT @RTSinfoplus: Et voilà le résumé des débats #EnLD sur l’accès à la propriété http://t.co/4hQjyQjb #storify » « RT @RTSinfoplus: L’Etat qui vous empêche de prendre votre 2e pilier pour acheter votre logement ? Le débat #EnLD de ce matin es »| __truncated__ « RT @c_h_a_p_o: Bas les pattes, les banques! On ne touche pas à mon deuxième pilier! #rapaces #EnLD » « RT @mariebender: @Munsterma la perte du lien social, c’est les thuyas, pas les maisons 🙂 #EnLD » …
 $ created: POSIXct, format: « 2012-04-17 11:18:42 » « 2012-04-17 11:18:37 » « 2012-04-17 10:44:24 » « 2012-04-17 09:55:06 » …
 $ id     : chr  « 192195372347699200 » « 192195352571559936 » « 192186740788830208 » « 192174332712202240 » …
… et les sommets.
> str(vertices)
'data.frame': 38 obs. of  11 variables:
 $ name          : Factor w/ 38 levels "_mmmmmo","1dex_valais",..: 1 2 3 4 5 6 7 8 9 10 ...
 $ Freq          : num  1 1 1 2 1 3 3 23 6 6 ...
 $ auteur        : logi  TRUE TRUE TRUE TRUE TRUE TRUE ...
 $ description   : chr  "Pas pillon  mais presque !     \r\nDis-moi à quelles listes tu appartiens et je te dirai qui tu es !!!\r\n#creaproverbes" "Pour un Valais critique et libertaire." "Mathématicien, doctorant UNIL en analyse des réseaux sociaux. Écologiste, cycliste, conseiller communal Les Verts au #CCPully M"| __truncated__ "I'm a Computer Security Enthusiast!" ...
 $ statusesCount : num  10599 4506 8480 6026 3975 ...
 $ followersCount: num  1621 322 367 195 210 ...
 $ friendsCount  : num  1498 183 581 578 341 ...
 $ nom           : chr  "la chenille" "1dex_Valais" "Yannick Rochat" "B" ...
 $ created       : POSIXct, format: "2010-07-16 17:16:45" "2011-05-11 13:25:13" "2008-07-21 17:55:13" "2011-10-15 23:28:02" ...
 $ location      : chr  "toujours ailleurs" "Sion" "Pully" "" ...
 $ id            : chr  "167424628" "296771355" "15516583" "391628982" ...
Ceci permet par exemple de générer un graphe en faisant intervenir facilement les attributs, comme c’est le cas dans la représentation graphique ci-dessous, où la taille des sommets augmente en fonction du nombre de tweets écrits, et l’épaisseur des arcs est égale au nombre de mentions du sommet adjacent.
Publicités

Commenter

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s