使用ggplot2绘制Alluvial图:高亮指定配对的实现方案
解决Alluvial图指定配对高亮的思路
核心方案
给数据集新增一个标记列,区分「需要高亮的配对」和「其余配对」,再通过颜色映射实现高亮效果,支持任意指定配对(具体值或行号)。
步骤1:给数据添加高亮标记
假设你的数据集名为df,包含CTaa_alpha、CTaa_beta以及表示频数的列(比如count):
方式1:指定具体配对值高亮
直接匹配你需要的alpha和beta组合:
library(dplyr) df <- df %>% mutate( highlight_group = ifelse( CTaa_alpha == "CAGGFNYQLIW" & CTaa_beta == "CASSVAGPNTEAFF", "target_pair", "other_pairs" ) )
方式2:按行号指定配对高亮
比如要高亮第10行的配对,先提取对应行的alpha和beta值,再标记:
target_alpha <- df$CTaa_alpha[10] target_beta <- df$CTaa_beta[10] df <- df %>% mutate( highlight_group = ifelse( CTaa_alpha == target_alpha & CTaa_beta == target_beta, "target_pair", "other_pairs" ) )
扩展:高亮多个配对
用case_when可以同时标记多组目标配对:
df <- df %>% mutate( highlight_group = case_when( CTaa_alpha == "CAGGFNYQLIW" & CTaa_beta == "CASSVAGPNTEAFF" ~ "target1", CTaa_alpha == "XXXXXX" & CTaa_beta == "YYYYYY" ~ "target2", TRUE ~ "other_pairs" ) )
步骤2:修改绘图代码实现高亮
在geom_alluvium和geom_stratum中,用新增的highlight_group映射填充色,再手动设置颜色:
library(ggplot2) library(ggalluvial) ggplot(df, aes(y = count, axis1 = CTaa_alpha, axis2 = CTaa_beta)) + # 冲积层颜色映射 geom_alluvium(aes(fill = highlight_group), width = 1/12) + # 节点层颜色映射 geom_stratum(aes(fill = highlight_group), width = 1/12) + # 节点标签 geom_text(stat = "stratum", aes(label = after_stat(stratum))) + # 手动设置颜色:高亮用鲜艳色,其余用灰色 scale_fill_manual( values = c( "target_pair" = "#ff6347", # 可替换成你喜欢的颜色 "other_pairs" = "#cccccc" ) ) + theme_minimal() + guides(fill = "none") # 不需要图例就加上这行
注意事项
- 替换代码中的
count为你实际用来表示频数的列名 - 高亮颜色可自行调整,比如
#1e90ff(蓝色)、#ffd700(金色)等 - 如果用多组高亮,在
scale_fill_manual中对应添加每组的颜色即可
内容的提问来源于stack exchange,提问作者Zoya Qaiyum
相关产品推荐
相关产品推荐

