r语言 - 如何使用delete_vertices从cluster_louvain中删除节点数量最多的组?



我正在使用图书馆igraphdata中提供的UKfaculty数据

library(igraph)
library(igraphdata)
library(RColorBrewer)
data("UKfaculty")

我用函数as.undirected()把有向图变换成无向图。

UND_UKfaculty <- as.undirected(UKfaculty)

并应用cluster_louvain函数得到分组:

lc <- cluster_louvain(UND_UKfaculty)

现在我找到了每组中有多少个节点:

sizes(lc)
Community sizes
1  2  3  4  5 
18 19 13 25  6

我试图从初始图中删除具有最高节点数的组(组4),函数为delete_vertices

我的问题集中在最后一部分。我不知道如何使用delete_vertices函数。

I tried:

ld<-delete_vertices(lc, 4)

,但提到delete_vertices(lc, 4)不是一个图形对象

对于集群id,例如4,应该确定相应的顶点。然后这些顶点就可以被移除。注意,在igraph中的顶点id总是自动从1到max重新编号。因此,我们必须保留源图的顶点名称。

require(igraph)
##
## step 1
## calculate cluster, show in plot
## community object lc: vertices indexed by cluster id
g1 <- make_tree(20, children = 2, mode = "undirected")
V(g1)$names <- as.character(V(g1))
lc <- cluster_louvain(g1,  resolution = quantile(degree(g1))[4] / (ecount(g1) - 1))
plot(g1, mark.groups=lc)
## step2
## calculate the ids of the most densely populated clusters
## and determine the corresponding vertices
sz <- sizes(lc)
max_clusters <- ( which(sz == max(sz)) )
V_to_delete <- unlist(lc[max_clusters])
## step 3
## delete vertices and plot new graph
g2 <- delete_vertices(g1, V_to_delete)
V(g2)$label <- V(g2)$names
dev.new()
plot(g2)

相关内容

  • 没有找到相关文章

最新更新