如何使用 gplots
中的 heatmap.2
函数在同一页面上生成 3 个热图,其中每个热图具有相同的行宽度,使得热图的长度每个热图的页面与其行数成正比?
下面是我对一些虚拟数据的错误尝试。我认为部分问题在于 heatmap.2
函数启动了一个新绘图,这意味着 layout
没有帮助。
gs <- paste("GS",sample(10),sep="_")
mat1 <- matrix(rnorm(100), nrow=10, ncol=10, dimnames=list(sample.int(10000,10),gs ))
mat2 <- matrix(rnorm(150), nrow=15, ncol=10, dimnames=list(sample.int(10000,15),gs ))
mat3 <- matrix(rnorm(200), nrow=20, ncol=10, dimnames=list(sample.int(10000,20),gs ))
nf <- layout(matrix(c(1,2,3),3,1), widths = lcm(5), heights = lcm(5), TRUE)
layout.show(nf)
library(gplots)
heatmap.2(mat1, Rowv=F, Colv=F,col=greenred(200), scale="row",
key=TRUE, symkey=FALSE, density.info="none", trace="none", dendrogram="none",
labCol=colnames(mat1), labRow=rownames(mat1), keysize=0.8)
heatmap.2(mat2, Rowv=F, Colv=F,col=greenred(200), scale="row",
key=TRUE, symkey=FALSE, density.info="none", trace="none", dendrogram="none",
labCol=colnames(mat2), labRow=rownames(mat2), keysize=0.8)par(mar = c(3,0,1,1))
heatmap.2(mat3, Rowv=F, Colv=F,col=greenred(200), scale="row",
key=TRUE, symkey=FALSE, density.info="none", trace="none", dendrogram="none",
labCol=colnames(mat3), labRow=rownames(mat3), keysize=0.8)
最佳答案
答案是否定的,您不能将 layout
与 heatmap.2
结合使用。
来自 ?heatmap.2
它是明确的:
heatmap.2() uses layout and draws the image in the lower right corner of a 2x2 layout. Consequentially, it can not be used in a multi column/row layout, i.e., when par(mfrow= *) or (mfcol= *) has been called.
您可以在此处将 image
与 axis
一起使用,因为您不需要绘制树状图。
library(gplots)
heatmap3 <- function(mat1){
image(mat1, Rowv=F, Colv=F,col=greenred(200), scale="row",
key=TRUE, xlab=colnames(mat1), ylab=rownames(mat1), keysize=0.8)
axis(1, at = seq(0, 1, length.out = dim(mat1)[1]), labels = gs,
las = 2)
axis(2, at = seq(0, 1, length.out = dim(mat1)[1]), labels = gs,
las = 2)
}
nf <- layout(matrix(c(1,2,3),3,1), widths = lcm(5), heights = lcm(5), TRUE)
heatmap3(mat1)
heatmap3(mat2)
heatmap3(mat3)
关于r - 在 R 中使用按比例长度绘制的页面绘制 3 次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17903405/