You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于igraph节点名称后缀分组设置节点颜色的技术咨询

解决igraph顶点按下划线后缀分组着色的问题

嗨,我来帮你搞定这个需求!要实现把名称下划线后字符相同的顶点归为同组并设置相同颜色,咱们可以分几步来操作,代码和解释都给你整理好了:

步骤1:提取顶点的分组标识

首先,我们需要从每个顶点的名称里提取下划线后面的部分,作为分组的依据。可以用strsplit()函数来拆分字符串:

library(igraph)

# 你的示例数据
m <- matrix(data = c("a1_ghj", "a1_phj", "b2_ghj", "c1_pht", "c1_ght", "a1_ghi", "g5_pht", "d2_phj", "r5_phj", "u6_pht"), ncol = 2)
g <- graph_from_edgelist(m)

# 提取每个顶点的后缀(下划线后的部分)作为分组
vertex_groups <- sapply(V(g)$name, function(x) strsplit(x, "_")[[1]][2])

步骤2:为每个分组分配唯一颜色

接下来,我们给每个不同的分组分配一个独特的颜色。可以用rainbow()或者hcl.colors()来生成颜色,确保每个分组颜色不同:

# 获取所有唯一的分组
unique_groups <- unique(vertex_groups)
# 生成对应数量的颜色
group_colors <- rainbow(length(unique_groups))
# 创建分组到颜色的映射
color_map <- setNames(group_colors, unique_groups)
# 给每个顶点分配对应的颜色
V(g)$color <- color_map[vertex_groups]

步骤3:绘制带分组着色的图形

现在就可以绘图了,为了让结果更清晰,我们可以加上图例,说明每个颜色对应的分组:

# 绘制图形
plot(g, 
     vertex.size = 20,  # 调整顶点大小
     vertex.label.cex = 0.8,  # 调整标签大小
     edge.color = "gray",  # 设置边的颜色
     main = "顶点按下划线后缀分组着色图")

# 添加图例
legend(x = "bottomright",  # 图例位置
       legend = unique_groups,  # 分组名称
       fill = group_colors,  # 对应颜色
       title = "分组(下划线后缀)",
       cex = 0.8)

这样出来的图里,所有下划线后缀相同的顶点都会是同一个颜色,而且图例能清楚展示每个分组对应的颜色~

如果想要更美观的颜色,也可以把rainbow()换成hcl.colors(length(unique_groups), "viridis")这种色彩更和谐的调色板哦!

内容的提问来源于stack exchange,提问作者minoo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:11:19