默认情况下,R' heatmap
将对行和列进行聚类:
mtscaled = as.matrix(scale(mtcars))
heatmap(mtscaled, scale='none')
我可以禁用群集:
heatmap(mtscaled, Colv=NA, Rowv=NA, scale='none')
然后树形图消失了:
但现在数据已不再聚集。
我不希望显示树形图,但我仍然希望对行和/或列进行聚类。我怎么能这样做?
我想要的示例:
答案 0 :(得分:7)
library(gplots)
heatmap.2(mtscaled,dendrogram='none', Rowv=TRUE, Colv=TRUE,trace='none')
Rowv
- 是TRUE,这意味着树形图是基于行平均值计算和重新排序的。
Colv
- 列应与行相同。
答案 1 :(得分:5)
您可以使用pheatmap执行此操作:
mtscaled <- as.matrix(scale(mtcars))
pheatmap::pheatmap(mtscaled, treeheight_row = 0, treeheight_col = 0)
请参阅此处的pheatmap输出:
答案 2 :(得分:0)
我和pheatmap有类似的问题,它具有更好的可视化和热图或热图。虽然heatmap.2是您的解决方案的选择,但这里是pheatmap的解决方案,通过提取聚类数据的顺序。
library(pheatmap)
mtscaled = as.matrix(scale(mtcars))
H = pheatmap(mtscaled)
Here is the output of pheatmap
pheatmap(mtscaled[H$tree_row$order,H$tree_col$order],cluster_rows = F,cluster_cols = F)
Here is the output of pheatmap after extracting the order of clusters
答案 3 :(得分:0)
对于ComplexHeatmap,有一些函数参数可以删除树状图:
library(ComplexHeatmap)
Heatmap(as.matrix(iris[,1:4]), name = "mat", show_column_dend = FALSE, show_row_dend = FALSE)
答案 4 :(得分:0)
使用基本的 R 热图函数绘制两次树状图。获取第一次运行的输出,该输出聚类但强制绘制树状图,然后再次将其输入热图函数。这一次,没有聚类,也没有绘制树状图。
#生成一个稍微有点结构的随机对称矩阵,并制作一个热图
{
"errors": [
{
"message": "The type of Query.GetUser must be Output Type but got: undefined."
},
{
"message": "The type of Mutation.mutation must be Output Type but got: undefined."
}
]
}
#保存输出
M100s<-matrix(runif(10000),nrow=100)
M100s[2,]<-runif(100,min=0.1,max=0.2)
M100s[4,]<-runif(100,min=0.1,max=0.2)
M100s[6,]<-runif(100,min=0.1,max=0.2)
M100s[99,]<-runif(100,min=0.1,max=0.2)
M100s[37,]<-runif(100,min=0.1,max=0.2)
M100s[lower.tri(M100s)] <- t(M100s)[lower.tri(M100s)]
heatmap(M100s)
#在没有聚类或树状图的情况下再次运行
OutputH <- heatmap(M100s)