网络中的颜色集群成员
Color cluster members in a network
我想使用 membership()
作为调色板索引,根据网络节点所属的节点为其着色。
我在 igraph
对象的子集上计算集群。我希望只为子图的元素着色,其余部分为灰色。
我找到了一种手动为小型网络执行此操作的方法,但找不到自动执行此操作的方法。
如果我使用讨论的方法 here,它会中断。
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")
我想使用 membership()
作为调色板索引,根据网络节点所属的节点为其着色。
我在 igraph
对象的子集上计算集群。我希望只为子图的元素着色,其余部分为灰色。
我找到了一种手动为小型网络执行此操作的方法,但找不到自动执行此操作的方法。
如果我使用讨论的方法 here,它会中断。
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")