在igraph中按簇聚集图形

Jac*_*b H 8 r igraph

我想将图表折叠到各自的社区/群集中.让我用以下玩具示例来说明这一点:

set.seed(123)

#toy graph
g <- barabasi.game(10) %>%
  as.undirected()

#identify communities 
c_g <- fastgreedy.community(g) 
Run Code Online (Sandbox Code Playgroud)

有三个社区,如下图所示.

在此输入图像描述

我想减少顶点的折叠,以便结果图中的顶点对应于先前顶点的成员资格.见图表.

在此输入图像描述

我是新手igraph包,我不熟悉处理igraph对象的最佳方法.

luk*_*keA 10

你可以尝试contract:

library(igraph)
set.seed(123)
g <- barabasi.game(10) %>% as.undirected()
c_g <- fastgreedy.community(g) 
V(g)$name <- letters[1:vcount(g)]

g2 <- contract(g, membership(c_g), vertex.attr.comb=toString)

par(mfrow=c(1,2))
plot(g, vertex.color=membership(c_g))
plot(simplify(g2), vertex.color=1:vcount(g2))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述