Как сгруппировать узлы по атрибуту вершины в ggnet2 или ggnetwork

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

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

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

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

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 я просто добавил параметр mode, который определяет способ размещения вершин в визуализации графа. Я знаю, что это не полностью отвечает на ваш вопрос, но я надеюсь, что это немного поможет.

Другие вопросы по тегам