cluster walktrap returns 三个社区,但绘制时它们都在彼此之上,没有可见的聚类

cluster walktrap returns three communities, but when plotting they are all on top of each other, with no visible clustering

我一直在按照 documentation tutorials 甚至是讲授教程一步步进行。但出于某种原因,我的情节输出是这样的:

输出对我来说没有任何意义。当前情节中显然没有结构或社区,因为您可以看到更大的圆圈都是重叠的。在这种情况下,return 不应该只有一个社区吗?此外,我的网络的模块化是 ~0.02,这再次表明没有社区结构。但为什么 return 3 个社区?

这是我的代码:(与文档中的代码完全相同,但数据集不同)

m <- data.matrix(df)
g <- graph_from_adjacency_matrix(m, mode = "undirected")
#el <- get.edgelist(g)

wc <- cluster_walktrap(g)
modularity(wc)
membership(wc)
plot(wc,g)

我的数据集看起来是一个csv形式的500x500邻接矩阵,1-500列和索引名称对应一个人。

我尝试了解社区 class 并为情节使用不同类型的变量,例如membership(wc)[2] 等。我的想法是着色完全错误,但到目前为止我尝试过的任何事情似乎都无法解决问题。

你可以有社区间的联系。您正在处理一个包含 500 个节点的图表,它们可以有多个连接。不同社区的节点之间会有大量的连接,但是如果你进行随机游走,你很可能会遍历同一社区的节点之间的连接。

如果您将图中的社区分开(使用@G5W 的代码 (igraph) Grouped layout based on attribute),您可以看到不同的群体。

set.seed(4321)
g <- sample_gnp(500, .25)

plot(g, vertex.label = '', vertex.size = 5)
wc <- cluster_walktrap(g)
V(g)$community <-  membership(wc)
E(g)$weight = 1

g_grouped = g

for(i in unique(V(g)$community)){
  groupV = which(V(g)$community == i)
  g_grouped = add_edges(g_grouped, combn(groupV, 2), attr=list(weight = 2))
}

l <- layout_nicely(g_grouped)

plot( wc,g, layout = l, vertex.label = '', vertex.size = 5, edge.width = .1)

红色边缘是社区间连接,黑色边缘是社区内边缘