首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用delete_vertices从cluster_louvain中删除节点数目最多的组?

如何使用delete_vertices从cluster_louvain中删除节点数目最多的组?
EN

Stack Overflow用户
提问于 2022-11-09 19:30:01
回答 1查看 27关注 0票数 0

我使用的是UKfaculty数据库中的数据

代码语言:javascript
运行
复制
library(igraph)
library(igraphdata)
library(RColorBrewer)
data("UKfaculty")

我使用函数as.undirected()将有向图转换为无向图。

代码语言:javascript
运行
复制
UND_UKfaculty <- as.undirected(UKfaculty)

我应用了cluster_louvain函数来获得分组:

代码语言:javascript
运行
复制
lc <- cluster_louvain(UND_UKfaculty)

现在,我发现了每个组中有多少节点:

代码语言:javascript
运行
复制
sizes(lc)
Community sizes
 1  2  3  4  5 
18 19 13 25  6

我试图从初始图中删除具有函数delete_vertices的节点数最多的组(第4组)。

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

我试过:

代码语言:javascript
运行
复制
ld<-delete_vertices(lc, 4)

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

EN

回答 1

Stack Overflow用户

发布于 2022-11-10 15:12:14

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

代码语言:javascript
运行
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74380397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档