关于pheatmap绘制热图时聚类顺序的技术咨询
pheatmap绘制热图时聚类顺序的技术咨询
看起来你正在用pheatmap包给你的数据集绘制热图,而且已经开启了列聚类(cluster_cols = TRUE),不过你写的clustering_method = "wa...好像没写完,先帮你把数据集整理好,再针对热图聚类相关的问题给你一些实用的建议:
首先,你的数据集可以用这段R代码还原:
mdata2 <- structure(list(EE = c(3.3221428469822, 3.62699732299098, 1.75430154205983, 0.809228977410138, 1.24117055233438, 2.93403148663873, 4.01630566539058, 1.5334176884274, 0.598331636908125, 0.793972781447563), MI = c(3.20812756072619, 3.73729312689288, 2.32268411219261, 1.16578395871478, 2.02899881030574, 2.43723772029964, 3.98855299963887, 1.76088057576795, 0.684310806612439, 1.512739619069), PI = c(2.97858874003521, 3.77000551572515, 2.82873533944253, 2.17460752133963, 2.81526651451227, 2.31001492452861, 4.0325069645006, 2.35155407135517, 1.41519706213454, 2.62939873195416)), row.names = c("A", "B", "C", "D", "E", "F", "G", "H", "I", "J"), class = "data.frame")
接下来针对聚类顺序相关的常见需求,给你几个解决方案:
补全聚类方法参数:
pheatmap的clustering_method支持hclust里的所有聚类算法,比如常用的"ward.D2"、"complete"、"average"等。如果你本来想写的是沃德法(ward),可以补全代码:library(pheatmap) pheatmap(mdata2, cluster_cols = TRUE, clustering_method = "ward.D2")调整聚类分支顺序:如果默认的聚类树顺序不合心意,你可以手动反转或者调整树的结构。先提前计算出列的聚类树,修改顺序后再传入
pheatmap:# 先计算列的聚类树(用你指定的方法) col_cluster_tree <- hclust(dist(t(mdata2)), method = "ward.D2") # 反转聚类顺序 col_cluster_tree$order <- rev(col_cluster_tree$order) # 用修改后的树绘制热图 pheatmap(mdata2, cluster_cols = TRUE, tree_col = col_cluster_tree)完全自定义列顺序:要是你不想用算法聚类,想自己指定列的展示顺序,只需要关闭列聚类,再用
column_order参数指定顺序就行:# 比如按照EE、MI、PI的顺序排列 pheatmap(mdata2, cluster_cols = FALSE, column_order = c("EE", "MI", "PI"))更换距离计算方式:默认
pheatmap用欧氏距离计算列间相似度,如果你想改用相关性距离或者其他方法,可以用distance_cols参数设置:pheatmap(mdata2, cluster_cols = TRUE, clustering_method = "ward.D2", distance_cols = "correlation")
备注:内容来源于stack exchange,提问作者Fabrizio
相关产品推荐
相关产品推荐

