如何使 bipartite 图下方节点框与交互连线颜色一致?
解决Bipartite图下方节点与连线颜色不一致问题
问题根源
原代码中颜色向量colP的长度是上下节点的总数量,而plotweb函数的col.interaction参数若为向量时,长度需匹配上方节点数量,这就导致颜色映射错位,最终下方节点框与连线颜色无法对应。要实现二者颜色一致,需精准控制每个连线的颜色与对应下方节点匹配。
修正后的代码
library(RColorBrewer) library(bipartite) # 生成 bipartite 矩阵 bip_matrix <- table(bip_data$higher, bip_data$lower) # 获取唯一下方节点并分配对应颜色 lower_nodes <- colnames(bip_matrix) col_low <- rainbow(length(lower_nodes)) names(col_low) <- lower_nodes # 命名颜色向量,便于匹配节点 # 创建连线颜色矩阵:每个连线颜色对应其目标下方节点的颜色 col_interaction <- matrix(col_low[colnames(bip_matrix)], nrow = nrow(bip_matrix), ncol = ncol(bip_matrix), byrow = TRUE) # 绘制 bipartite 图 plotweb(bip_matrix, method = 'normal', col.high = 'gray', # 上方节点颜色可自行调整 col.low = col_low, # 下方节点填充色 col.interaction = col_interaction, # 连线颜色与下方节点一致 bor.col.interaction = col_interaction, # 连线边框颜色同步 bor.col.high = 'black', # 上方节点边框颜色 bor.col.low = col_low, # 下方节点边框颜色与填充色一致 high.lablength = NULL, low.lablength = NULL, text.rot = 90, text.high.col = 'black', text.low.col = 'black', low.lab.dis = 0 )
关键调整说明
- 单独为下方节点分配颜色,避免合并上下节点导致的颜色长度不匹配问题
- 使用矩阵形式的
col.interaction,让每个连线的颜色精准对应目标下方节点的颜色 - 同步设置
bor.col.low与col.low,确保下方节点的边框颜色也和填充色、连线色统一
内容的提问来源于stack exchange,提问作者yun
相关产品推荐
相关产品推荐

