2017-02-14 1 views
0

Je veux tracer un objet réseau en utilisant GGally ou ggnetwork et je veux être capable de produire une disposition où les nœuds sont groupés par un attribut vertex. J'ai passé un certain temps à chercher un moyen de le faire, mais je n'ai pas compris. Les nœuds peuvent-ils être groupés dans la mise en page par attribut, de sorte que tous les nœuds avec l'attribut «a» sont dans un cluster, les nœuds avec l'attribut «b» dans un cluster, etc.?Comment grouper des nœuds par l'attribut vertex dans ggnet2 ou ggnetwork

Merci d'avance.

Voici deux exemples:

library (GGally) 
library (ggnetwork) 
library (ggplot2) 
library (sna) 
library (network) 

#make a random network with some vertex attributes 
abc<-as.network(rgraph(20,1)) 
abc %v% "kinds" <- letters[1:3] 
abc %v% "model" <- LETTERS[12:18] 

#plot the network using ggnet2 in library (GGally) 
#I want to somehow group the nodes together by a vertex attribute. 
#Here I have tried to group nodes by "kinds." How to do this?? 
ggnet2(abc, 
     size="degree", size.cut=3, 
     color = "kinds", 
     group = "kinds") 


#and here is an example using library (ggnetwork) 

#set degree as an attribute to call in ggnetwork. 
#I could not figure out another way to set size = degree without first 
#passing it as a vertex attribute. 
abc %v% "deg_4ggnet"<-degree(abc) 

abc2<-ggnetwork(abc) 
ggplot(abc2, aes(x = x, y = y, xend = xend, yend = yend))+ 
    geom_edges(color = "black") + 
    geom_nodes(aes(color = kinds, size = deg_4ggnet)) + 
    theme_blank() 

#How to group by vertex attribute "kinds"??? 
+0

Consultez ce post: http://stackoverflow.com/q/28693826/4488105 – paqmo

Répondre

1

Hey je viens de commencer à utiliser ggnet2 (je ne l'ai pas encore utilisé ggnetwork). Jusqu'à présent, je n'ai pas trouvé un moyen rapide et facile de regrouper les nœuds de la façon dont vous essayez de les regrouper. Cependant, j'ai quelques suggestions sur les choses que vous pouvez faire pour améliorer la structure de vos graphiques.

Installez d'abord le package RColorBrewer. Ensuite, exécutez le code suivant:

library(igraph) 
library(ggplot2) 
library(GGally) 
library(sna) 
library(network) 
library(RColorBrewer) 

abc<-as.network(rgraph(20,1)) 
abc %v% "kinds" <- sample(letters[1:3], 10, replace = TRUE) 

ggnet2(abc, color = "kinds", size="degree", size.cut=3, palette="Set3") 
ggnet2(abc, color = "kinds", size="degree", size.cut=3, palette="Set3", mode = "circle") 
ggnet2(abc, color = "kinds", size="degree", size.cut=3, palette="Set3", mode = "spring") 

Dans le 1er appel de fonction ggnet2, j'ai ajouté un paramètre de palette. Ce paramètre prend en charge les valeurs de palette de couleurs prédéfinies dans le package RColorBrewer. Dans les 2ème et 3ème ggnet2 appels, j'ai juste ajouté le mode parémètre qui spécifie la façon dont les sommets seront placés dans la visualisation graphique. Je sais que cela ne répond pas complètement à votre question mais j'espère que cela aide un peu.