r - 在 R 中使用按比例长度绘制的页面绘制 3 次

标签 r

如何使用 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)

最佳答案

答案是否定的,您不能将 layoutheatmap.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.

您可以在此处将 imageaxis 一起使用,因为您不需要绘制树状图。

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)

enter image description here

关于r - 在 R 中使用按比例长度绘制的页面绘制 3 次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17903405/

相关文章:

r - 使用 R 在坐标系中绘制节点和边

从 csv 文件中读取奇数行

r - 一个新列中跨列子集的字数统计

r - ggplot 线条和线段填充

r - 在 Knitr 中为 md 或 HTML 输出设置页面宽度

r - 如果 df 列表中的 df 缺失,则从字符向量添加列

r - 如何在 Jupyter 中启用 R 语法高亮显示?

r - 更新文件时 blogdownserve_site() 出错

c++ - 是否可以根据任意后验函数定义 Stan 模型?

正则表达式,一对单词的第一次、第二次、第三次等出现之间的匹配