如何使用gplots包的heatmap.2函数自定义热图轴顺序
如何用gplots的heatmap.2保持CSV原始轴顺序绘制热图
嘿,这个需求我太熟悉了!默认情况下heatmap.2()会自动对行和列做层次聚类,这就会打乱你CSV里原本的轴顺序。要严格保持表格里的顺序,只需要两步就能搞定:
步骤1:加载数据并转换为矩阵
首先确保你加载了必要的包,然后正确读取CSV数据——注意要保留原始的行名和列名,避免R自动修改特殊字符:
# 加载所需包 library(gplots) library(readr) # 也可以用base R的read.csv,效果一致 # 读取CSV:row.names=1表示把第一列作为行名,check.names=FALSE保留原始列名 raw_data <- read.csv("your_data.csv", row.names = 1, check.names = FALSE) # 转换为矩阵(heatmap.2要求输入为矩阵格式) data_matrix <- as.matrix(raw_data)
步骤2:绘制热图并锁定轴顺序
核心是关闭自动聚类,让热图直接沿用矩阵的原始行/列顺序:
heatmap.2(data_matrix, # 关键参数:关闭行、列的聚类排序 Rowv = FALSE, Colv = FALSE, # 显式指定行/列标签(默认就是原始名称,写出来更稳妥) labRow = rownames(data_matrix), labCol = colnames(data_matrix), # 可选美化参数(根据你的需求调整) col = colorRampPalette(c("#2c7fb8", "#ffffff", "#d95f02"))(100), # 自定义颜色渐变 trace = "none", # 去掉默认的密度追踪线 margins = c(10, 10), # 调整边距,避免长标签被截断 dendrogram = "none" # 因为关闭了聚类,直接隐藏树状图 )
额外小贴士
如果后续你需要部分调整顺序(比如某几列重新排序,其余保持原始顺序),可以手动指定排序向量。比如想让列顺序为col2, col1, col3,可以把Colv改成:
Colv = match(c("col2", "col1", "col3"), colnames(data_matrix))
内容的提问来源于stack exchange,提问作者Marc Kees




