R使用簇绘制热图,但隐藏树状图

时间:2015-04-27 10:49:11

标签: r plot visualization heatmap

默认情况下,R' heatmap将对行和列进行聚类:

mtscaled = as.matrix(scale(mtcars))
heatmap(mtscaled, scale='none')

enter image description here

我可以禁用群集:

heatmap(mtscaled, Colv=NA, Rowv=NA, scale='none')

然后树形图消失了:enter image description here

但现在数据已不再聚集。

我不希望显示树形图,但我仍然希望对行和/或列进行聚类。我怎么能这样做?

我想要的示例:enter image description here

5 个答案:

答案 0 :(得分:7)

library(gplots)
heatmap.2(mtscaled,dendrogram='none', Rowv=TRUE, Colv=TRUE,trace='none')

Rowv - 是TRUE,这意味着树形图是基于行平均值计算和重新排序的。

Colv - 列应与行相同。

enter image description here

答案 1 :(得分:5)

您可以使用pheatmap执行此操作:

mtscaled <- as.matrix(scale(mtcars))
pheatmap::pheatmap(mtscaled, treeheight_row = 0, treeheight_col = 0)

请参阅此处的pheatmap输出:

pheatmap output

答案 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)