Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R中绘制pheatmap时,如何对簇叶(列)重新排序?_R_Pheatmap - Fatal编程技术网

在R中绘制pheatmap时,如何对簇叶(列)重新排序?

在R中绘制pheatmap时,如何对簇叶(列)重新排序?,r,pheatmap,R,Pheatmap,我正在绘制一组15个样本,分为三组a、B、C,热图顺序为C、a、B(我读过这篇文章是因为它在右侧绘制了最相似的集群)。我想对簇进行排序,以便簇的叶子被视为A、B、C(因此重新组织簇分支的顺序。是否有一个函数可以帮助我这样做 我使用的代码是: library(pheatmap) pheatmap(mat, annotation_col = anno, color = colorRampPalette(c("blue", "white", "red"))(50), show_rownam

我正在绘制一组15个样本,分为三组a、B、C,热图顺序为C、a、B(我读过这篇文章是因为它在右侧绘制了最相似的集群)。我想对簇进行排序,以便簇的叶子被视为A、B、C(因此重新组织簇分支的顺序。是否有一个函数可以帮助我这样做

我使用的代码是:

library(pheatmap)

pheatmap(mat, annotation_col = anno, 
    color = colorRampPalette(c("blue", "white", "red"))(50), show_rownames = F)

(cluster_cols=FALSE根本不会对样本进行聚类,但这不是我想要的)

我在另一个论坛上也发现了这一点,但我不确定如何更改功能代码,以及它是否适用于我:

clustering\u回调函数,用于修改集群。是 使用两个参数调用:原始hclust对象和使用的矩阵 用于群集。必须返回hclust对象


您好,我不确定这是否对您有帮助,但当您选中
?pheatmap
并向下滚动到示例时,最后一段代码实际上给出了该示例

# Modify ordering of the clusters using clustering callback option
callback = function(hc, mat){
    sv = svd(t(mat))$v[,1]
    dend = reorder(as.dendrogram(hc), wts = sv)
    as.hclust(dend)
}

pheatmap(test, clustering_callback = callback)
我在我的热图上尝试了它,之前定义的函数实际上按照我需要的方式对集群进行了排序。尽管我不得不承认(因为我是R新手),但我并不完全理解定义的
回调
函数的功能

也许您还可以使用
dendsort
编写函数,因为我知道您可以使用它对树状图的分支进行重新排序。

#install.packages(“dendsort”)
# install.packages("dendsort")
library(dendsort)

sort_hclust <- function(...) as.hclust(dendsort(as.dendrogram(...)))

cluster_cols=sort_hclust(hclust(dist(mat)))
图书馆(dendsort)
sort_hclust在这种情况下,幸运的是列的聚类与样本编号顺序一致(类似于树状图),因此我添加了cluster_cols=FALSE,解决了重新聚类列的问题(并避免编写回调函数)

pheatmap(mat, 
         annotation_col = anno, 
         fontsize_row = 2, 
         show_rownames = T, 
         cutree_rows = 3, 
         cluster_cols = FALSE)

Hi@keryruo列的顺序将作为样本编号,而不是树状图,是否有函数用于此?ThanksHi Ecg,您想提取样本名称,其顺序与pheatmap列中的顺序相同?out Hi@han50000列的顺序将作为样本编号,而不是树状图,是否有函数用于此?as.numeric?我有no体验写作功能,谢谢