我有一个基因表达数据集,想显示一些基因的热图。首先,我想基于所有基因进行层次聚类,并创建一个树状图,然后在这些基因的一个子集上创建一个热图。明确地说,热图将具有与已创建的树状图相同的列,但显示的行更少。我曾尝试使用下面的代码,但似乎 pheatmap 根据缩减矩阵重新排序集群。
# Random data
full_mat <- matrix(rgamma(1000, shape = 1) * 5, ncol = 50)
reduced_mat <- full_mat[1:5,]
# Function to calculate distances on full-matrix and make dendrogram
cl_cb <- function(hcl, mat){
# Recalculate manhattan distances for reorder method
dists <- dist(full_mat, method = "manhattan")
# Perform reordering according to OLO or GW method
hclust_olo <- reorder(hcl, dists, method="GW")
return(hclust_olo)
}
# Only display the reduced matrix (same columns but fewer rows)
p <- pheatmap(reduced_mat,
show_rownames=TRUE,
show_colnames = TRUE,
cluster_cols=T,
cluster_rows=F,
scale = "none",
clustering_callback = cl_cb
)
我尝试设置cluster_cols = F
,但根本没有进行任何树状图或重新排序。