5

同じpngまたはpdfで2つ以上のヒートマップを並べて表示しようとしています。この場合、レイアウトまたはmfcolが機能していません。誰かがこれを手伝ってくれませんか。

4

4 に答える 4

4

最近導入された gridGraphics パッケージを使用した 1 つのオプションを次に示します。

ここに画像の説明を入力

library(gridGraphics)
library(grid)
heatmap(as.matrix(mtcars))

library(gridGraphics)
grab_grob <- function(){
  grid.echo()
  grid.grab()
}

g <- grab_grob()
grid.newpage()

# library(gridExtra)
# grid.arrange(g,g, ncol=2, clip=TRUE)

lay <- grid.layout(nrow = 1, ncol=2)
pushViewport(viewport(layout = lay))
grid.draw(editGrob(g, vp=viewport(layout.pos.row = 1, 
                                  layout.pos.col = 1, clip=TRUE)))
grid.draw(editGrob(g, vp=viewport(layout.pos.row = 1, 
                                  layout.pos.col = 2, clip=TRUE)))
upViewport(1)
于 2015-08-02T03:02:35.760 に答える
3

heatmap.2 のヘルプドキュメントに記載されているように、

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

同じことがヒートマップにも当てはまります。

于 2014-03-05T02:52:43.777 に答える
1

まったく同じ問題が発生した後、次の解決策を思い付きました。

1) ggplot2 を使用して、次のようにデンドログラムでヒートマップを作成します: ggplot2 を使用してラティス デンドログラム グラフを再現し、multiplot() 関数で配置します ( http://www.cookbook-r.com/Graphs/Multiple_graphs_on_one_page_%28ggplot2%29/ ) 。

2) しかし、これは大変な作業であり、基本の heatmap() 関数に固執したかったのです。以下は簡単で (単純な R ではありません)、imagemagick がインストールされている場合は Linux で動作します。

m <- matrix(runif(10^2), ncol=10)
for (i1 in 1:4) {
    ifile <- paste0(i1,'_heatmap.pdf')
    pdf(ifile)
    heatmap(m)
    d <- dev.off()
}
system('montage -geometry 100% -tile 2x2 ./*_heatmap.pdf outfile.pdf')
于 2015-03-27T09:24:55.950 に答える