2017-02-14 4 views
0

Я хочу построить сетевой объект с помощью GGally или ggnetwork, и я хочу иметь возможность создавать макет, где узлы сгруппированы по атрибуту вершины. Я потратил некоторое время на поиск способа сделать это, но не понял этого. Могут ли узлы группироваться в макете по атрибуту так, что все узлы с атрибутом «a» находятся в кластере, узлы с атрибутом «b» находятся в кластере и т. Д.?Как сгруппировать узлы по атрибуту vertex в ggnet2 или ggnetwork

Заранее спасибо.

Вот два примера:

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

Отметьте это сообщение: http://stackoverflow.com/q/28693826/4488105 – paqmo

ответ

1

Эй, я только начал использовать ggnet2 (я не использовал ggnetwork пока). До сих пор я не нашел быстрый и простой способ заставить узлы группировать то, как вы пытаетесь их сгруппировать. Тем не менее, у меня есть несколько предложений о том, что вы можете сделать, чтобы улучшить структуру ваших графиков.

Сначала установите пакет RColorBrewer. Затем введите следующий код:

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") 

В первом вызове функции ggnet2 я добавил параметр палитры. Этот параметр принимает значения цветовой палитры, которые предопределены в пакете RColorBrewer. Во 2-м и 3-м вызовах ggnet2 я просто добавил параметр режима, который определяет способ размещения вершин в визуализации графа. Я знаю, что это не полностью отвечает на ваш вопрос, но я надеюсь, что это поможет немного.

Смежные вопросы