我有一个像这样的数据框:
set.seed(123)
test_df<-data.frame(Sample=c(LETTERS),var1=rnorm(26),var2=rnorm(26),color=rep(sample(c("High","low"),26,replace=TRUE)))
我可以使用以下方法从中生成树状图library(dendextend)
:
d<-dist(scale(test_df[,2:3]))
clust<-hclust(d)%>%as.dendrogram()
我想使用这个树状图clust
对另一个数据框中的样本进行排序。此数据框具有相同的样本,如下所示:
test_df_extend<-data.frame(Sample=c(LETTERS),var1=rnorm(26),var2=rnorm(26),var3=rnorm(26),var4=rnorm(26),var5=rnorm(26),var6=rnorm(26),color=rep(c("High","low"),13))
test_df_extend
我可以使用以下代码生成热图:
row.names(test_df_extend)<-test_df_extend$Sample
aheatmap(as.matrix(test_df_extend[,2:7]), color = "-RdBu:50", scale = "col", breaks = 0,Colv = NA,annColors = c("rainbow"),annRow=test_df_extend[,8])
但是,当我尝试将树状图传递到热图clust
中时,我在理解输出时遇到了问题。我可以获得重新排序的树状图,但不确定下面 1) 和 2) 之间的区别是什么意思。一个已Rowv
指定,另一个已reorderfun
随机指定w
!?我想我不完全理解这些reorderfun
论点,特别是 weight (w) 论点及其与Rowv
. 谁能帮我解释一下?谢谢!
1)
aheatmap(as.matrix(test_df_extend[,2:7]), color = "-RdBu:50", scale = "col", breaks = 0,Colv = NA,annColors = c("rainbow"),annRow=test_df_extend[,8],Rowv=clust)
2)
aheatmap(as.matrix(test_df_extend[,2:7]), color = "-RdBu:50", scale = "col", breaks = 0,Colv = NA,annColors = c("rainbow"),annRow=test_df_extend[,8], reorderfun=function(d,w) reorder(clust,1))