R用聚类绘制热图,但隐藏树状图
R draw heatmap with clusters, but hide dendrogram
默认情况下,R 的 heatmap
将聚类行和列:
mtscaled = as.matrix(scale(mtcars))
heatmap(mtscaled, scale='none')
我可以禁用集群:
heatmap(mtscaled, Colv=NA, Rowv=NA, scale='none')
然后树状图消失了:
但现在数据不再聚类了。
我不希望显示树状图,但我仍希望对行 and/or 列进行聚类。我该怎么做?
我想要的例子:
library(gplots)
heatmap.2(mtscaled,dendrogram='none', Rowv=TRUE, Colv=TRUE,trace='none')
Rowv
- 为 TRUE,这意味着树状图是根据行均值计算和重新排序的。
Colv
- 列的处理方式应与行相同。
我对 pheatmap 有类似的问题,它具有更好的可视化和热图或 heatmap.2。虽然 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
您可以使用 pheatmap:
mtscaled <- as.matrix(scale(mtcars))
pheatmap::pheatmap(mtscaled, treeheight_row = 0, treeheight_col = 0)
在此处查看作弊图输出:
对于 ComplexHeatmap,有函数参数来移除树状图:
library(ComplexHeatmap)
Heatmap(as.matrix(iris[,1:4]), name = "mat", show_column_dend = FALSE, show_row_dend = FALSE)
使用基本的 R 热图函数绘制树状图两次。获取第一个 运行 的输出,它聚类但必须绘制树状图,然后再次将其输入热图函数。这次没有聚类,也没有绘制树状图。
#生成一个带有一点结构的随机对称矩阵,并制作热图
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)
#运行 再一次没有聚类或树状图
M100c <- M100s
M100c1 <- M100c[,OutputH$rowInd]
M100c2 <- M100c1[OutputH$colInd,]
heatmap(M100c2,Rowv = NA, Colv = NA, labRow = NA, labCol = NA)
您可以依赖基本的 R 结构并考虑以下基于自己构建 hclust 树的方法。
mtscaled = as.matrix(scale(mtcars))
row_order = hclust(dist(mtscaled))$order
column_order = hclust(dist(t(mtscaled)))$order
heatmap(mtscaled[row_order,column_order], Colv=NA, Rowv=NA, scale="none")
不需要安装额外的垃圾。
默认情况下,R 的 heatmap
将聚类行和列:
mtscaled = as.matrix(scale(mtcars))
heatmap(mtscaled, scale='none')
我可以禁用集群:
heatmap(mtscaled, Colv=NA, Rowv=NA, scale='none')
然后树状图消失了:
但现在数据不再聚类了。
我不希望显示树状图,但我仍希望对行 and/or 列进行聚类。我该怎么做?
我想要的例子:
library(gplots)
heatmap.2(mtscaled,dendrogram='none', Rowv=TRUE, Colv=TRUE,trace='none')
Rowv
- 为 TRUE,这意味着树状图是根据行均值计算和重新排序的。
Colv
- 列的处理方式应与行相同。
我对 pheatmap 有类似的问题,它具有更好的可视化和热图或 heatmap.2。虽然 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
您可以使用 pheatmap:
mtscaled <- as.matrix(scale(mtcars))
pheatmap::pheatmap(mtscaled, treeheight_row = 0, treeheight_col = 0)
在此处查看作弊图输出:
对于 ComplexHeatmap,有函数参数来移除树状图:
library(ComplexHeatmap)
Heatmap(as.matrix(iris[,1:4]), name = "mat", show_column_dend = FALSE, show_row_dend = FALSE)
使用基本的 R 热图函数绘制树状图两次。获取第一个 运行 的输出,它聚类但必须绘制树状图,然后再次将其输入热图函数。这次没有聚类,也没有绘制树状图。
#生成一个带有一点结构的随机对称矩阵,并制作热图
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)
#运行 再一次没有聚类或树状图
M100c <- M100s
M100c1 <- M100c[,OutputH$rowInd]
M100c2 <- M100c1[OutputH$colInd,]
heatmap(M100c2,Rowv = NA, Colv = NA, labRow = NA, labCol = NA)
您可以依赖基本的 R 结构并考虑以下基于自己构建 hclust 树的方法。
mtscaled = as.matrix(scale(mtcars))
row_order = hclust(dist(mtscaled))$order
column_order = hclust(dist(t(mtscaled)))$order
heatmap(mtscaled[row_order,column_order], Colv=NA, Rowv=NA, scale="none")
不需要安装额外的垃圾。