如何在R中并排展示带统一注释的热图并按C端排序
解决方案
要实现按C-terminus热图的行排序、C-terminus热图在右侧且仅保留一个行注释,需做以下关键修改:
1. 统一两个热图的行顺序
让N-terminus热图的行完全匹配C-terminus热图的行顺序,合并后整体就会按C-terminus的行排序展示:
- 提取C-terminus热图的行名作为排序基准
- 重新排列N-terminus热图的行数据
- 同步调整行注释的行顺序,避免注释错位
2. 保留注释在右侧热图(C-terminus)
保持原代码中仅在C-terminus热图添加right_annotation的设置,确保合并后只有右侧一个注释。
修改后的完整代码:
# 生成C-terminus热图对象 cterm = Heatmap( as.matrix(c_term_agg_norm1 %>% mutate_if(is.numeric, function(x) ifelse(is.infinite(x), log2(0.00001), x))), show_row_names = TRUE, show_column_names = TRUE, show_row_dend = FALSE, show_column_dend = FALSE, cluster_columns = FALSE, col = col_fun, rect_gp = gpar(col = "white", lwd = 0.5), width = w*unit(5, "mm"), height = h*unit(5, "mm"), name = "normalized percentage", column_title = "C Terminus Cleavage", right_annotation = MAP_annot, column_split = factor(str_extract(names(c_term_agg_norm1),"[^_]+")) ) # 获取C-terminus热图的行顺序作为基准 cterm_row_order = rownames(cterm@matrix) # 调整行注释顺序,与C-terminus热图匹配 MAP_annot_aligned = MAP_annot[cterm_row_order, ] # 预处理N-terminus数据,按C-terminus的行顺序重新排列 nterm_data = n_term_agg_norm1[-1, ][cterm_row_order, ] %>% mutate_if(is.numeric, function(x) ifelse(is.infinite(x), log2(0.00001), x)) # 生成N-terminus热图对象 nterm = Heatmap( as.matrix(nterm_data), show_row_names = TRUE, show_column_names = TRUE, show_row_dend = FALSE, show_column_dend = FALSE, cluster_columns = FALSE, col = col_fun, rect_gp = gpar(col = "white", lwd = 0.5), width = w*unit(5, "mm"), height = h*unit(5, "mm"), name = "normalized percentage", column_title = "N Terminus Cleavage", # 不添加额外注释 # right_annotation = MAP_annot, column_split = factor(str_extract(names(n_term_agg_norm1),"[^_]+")) ) # 合并热图,保持N-terminus在左、C-terminus在右 combined_heatmap = nterm + cterm draw(combined_heatmap)
关键改动说明
cterm_row_order = rownames(cterm@matrix):提取C-terminus热图的行顺序作为统一基准n_term_agg_norm1[-1, ][cterm_row_order, ]:让N-terminus数据的行严格匹配C-terminus的顺序,确保合并后行对齐且按C-terminus排序MAP_annot_aligned = MAP_annot[cterm_row_order, ]:同步调整注释行顺序,避免注释与热图行错位(若原注释行序已匹配C-terminus,可省略此步)
内容的提问来源于stack exchange,提问作者Einav Laser
相关产品推荐
相关产品推荐

