2

各ヒートマップのページの長さが行数に比例するように、各ヒートマップの行幅が同じページに 3 つのヒートマップを生成するheatmap.2関数を使用するにはどうすればよいですか?gplots

ダミーデータを使用した私の誤った試みは以下のとおりです。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)
4

1 に答える 1

2

layout答えは いいえと組み合わせて使用​​することはできませんheatmap.2

それから?heatmap.2明示的です:

heatmap.2() はレイアウトを使用し、2x2 レイアウトの右下隅に画像を描画します。したがって、複数の列/行のレイアウトでは使用できません。つまり、par(mfrow= *) または (mf​​col= *) が呼び出された場合です。

デンドログラムをプロットする必要がないため、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)

ここに画像の説明を入力

于 2013-07-28T00:28:33.893 に答える