基本上我尝试过几种不同的聚类方式。我通常可以在iGraph中找到一个点,每个节点都标有一个簇。然后,我可以识别单个群集中的所有节点。然而,这会失去他们的优势。
我必须重新迭代群集1中所有节点的原始数据集,才能获得两个节点+边缘都在群集中的节点。我必须为每个群集执行此操作。
这似乎是一个痛苦的漫长过程,可能是我的谷歌缺少的捷径。
那么,在集群或执行社区检测流程之后,是否有一种简单的方法可以将单个群集/社区维护为自己的较小图形 - 即保留它们之间的所有节点和边缘?
答案 0 :(得分:2)
您可以使用delete.vertices()创建子图。例如:
library(igraph)
set.seed(123)
# create random graph
g <- barabasi.game(100, directed = F)
plot(g, layout=layout.fruchterman.reingold)
# do community detection
wc <- multilevel.community(g)
V(g)$community <- membership(wc)
# make community 1 subgraph
g_sub <- delete.vertices(g, V(g)[community != 1])
plot(g_sub, layout=layout.fruchterman.reingold)
答案 1 :(得分:0)
替代方案:
#Create random network
d <- sample_gnm(n=50,m=40)
#Identify the communities
dc <- cluster_walktrap(d)
#Induce a subgraph out of the first community
dc_1 <- induced.subgraph(d,dc[[1]])
#plot that specific community
plot(dc_1)