如何基于分组表为网络图中同组的edges$from节点设置统一颜色?
实现节点按分组统一着色
要给同一分组的节点设置相同颜色,核心是把groups里的分组信息绑定到图的节点属性中,再通过ggnet2的参数调用这个属性控制颜色。以下是具体实现步骤:
步骤1:将分组信息添加为图的节点属性
先把groups数据框中的分组信息匹配到图g的每个节点上,作为节点属性:
library(tidyverse) library(igraph) library(GGally) edges <- data.frame(from = c("A", "D", "B", "C", "A", "F", "F", "H", "I", "K", "J", "B", "I", "B", "L", "L"), to = c("E", "A", "A", "A", "G", "G", "C", "G", "G", "J", "K", "I", "B", "G", "K", "K")) groups <- data.frame(node = c("A", "B", "D", "E", "C", "F", "H", "G", "I", "K", "J", "L"), group = c("1", "1", "1", "E", "2", "2", "2", "2", "2", "3", "3", "3")) g <- graph_from_data_frame(edges, directed = TRUE) g <- simplify(g) # 匹配分组信息到节点属性 node_groups <- left_join(data.frame(node = V(g)$name), groups, by = "node") V(g)$group <- node_groups$group
步骤2:用ggnet2按分组着色
调用ggnet2时,通过color参数指定使用节点的group属性,同一分组的节点会自动使用相同颜色,也可以自定义配色:
# 默认自动配色 ggnet2(g, label = TRUE, color = "group") # 自定义分组配色示例 ggnet2(g, label = TRUE, color = "group", palette = c("1" = "#FF6B6B", "E" = "#4ECDC4", "2" = "#45B7D1", "3" = "#96CEB4"))
这样就能实现同一group分组的节点填充相同颜色的需求。
内容的提问来源于stack exchange,提问作者D. Studer
相关产品推荐
相关产品推荐

