如何解决网络中的颜色集群成员
我想使用 membership()
作为调色板索引,根据它们所属的网络节点为网络节点着色。
我在 igraph
对象的子集上计算集群。我希望只为子图的元素着色,其余部分为灰色。
我找到了一种方法,可以手动为小型网络执行此操作,但无法找到自动执行此操作的方法。
library("igraph")
library("igraphdata")
data(karate)
V(karate)$name <- gsub("ctor ","",V(karate)$name)
karate_1 <- induced.subgraph(karate,vids=which(graph.coreness(karate) > 2))
clu <- cluster_louvain(karate_1)
membership(clu)
V(karate)$color <- ifelse(V(karate)$name %in% c("Mr Hi","A2","A3","A4","A8","A14","A20"),"green",ifelse(V(karate)$name %in% c("A5","A6","A7","A11"),"red",ifelse(V(karate)$name %in% c("A9","A24","A25","A26","A28","A29","A30","A31","A32","A33","John A"),"blue","grey50")))
plot(karate,mark.groups=communities(clu),vertex.label=NA,edge.color = "grey50")
解决方法
尝试以下操作。为了使代码更清晰,我创建了一个颜色向量,但这并不是绝对必要的。
- 为
membership(clu)
中存在的顶点名称创建逻辑索引; - 为所有顶点指定默认颜色
"grey50"
; - 使用逻辑索引和成员编号将簇颜色分配给它们各自的顶点。
并绘制图表。
clrs <- c("red","green","blue")
i <- V(karate)$name %in% names(membership(clu))
V(karate)$color <- "grey50"
V(karate)$color[i] <- clrs[membership(clu)]
plot(karate,mark.groups=communities(clu),vertex.label=NA,edge.color = "grey50")
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。