2011-12-04 6 views
6

ヒートマップを使用してヒートマップを作成するにはRを使用しています.2 - これらのイメージを1つの大きなイメージにグループ化したいのですが、通常はレイアウト()ヒートマップ2はレイアウトを使用しているため、レイアウトが再帰的に動作しないため、これは機能しません。レイアウト内のレイアウトはR

レイアウトなしで2つの画像をグループ化する方法やレイアウトの再帰呼び出しをサポートする方法はありますか?

mat = matrix(nrow=3,nrow=3,1:9) 
layout(matrix(nrow=2,ncol=1)) 
heatmap.2(mat) ## overrides the layout and produces only one plot that takes whole screen 
heatmap.2(mat) ## still only one image 

ありがとう。

答えて

6

ほとんどの場合、完璧な解決策ではないハッキングがありますが、開始することがあります。

hm3という名前のheatmap.2関数の独自のバージョンを作成します。

if (missing(lhei) || is.null(lhei)) 

layoutコール:

layout(lmat, widths = lwid, heights = lhei, respect = FALSE) 

それは多分30行、コードの大きな塊だhm3のコードでは、間のすべての行をコメントアウトします。

x <- as.matrix(mtcars) 
lhei <- c(1.5, 4,1.5,4) 
lwid <- c(1.5, 4,1.5,4) 
layout(rbind(c(4,3,8,7),c(2,1,6,5)), 
    widths = lwid, heights = lhei, respect = FALSE) 
hm3(x) 
hm3(x) 

enter image description here

は明らかに、これはそれが素晴らしく見える(と大きなプロットエリアにするために、かなりの微調整が必​​要になります。私がしました:今、次のコードは、側面によって系統樹とキー側の2つのヒートマップを作成しますここに掲示するのに合理的なサイズであるためにすべてを踏みとどめた)。

これは完全にテストされていません。プロットの外観を制御するhm3関数内のオプションのいずれかを使用すると、状況が少しばかげてしまう可能性があります。しかしこれは、それらの問題に取り組むためのあなた自身の実験のための良い出発点かもしれません。

+0

ありがとうございます。これを行う簡単な方法はありません...誰かがより包括的な解決策を知っている場合に備えて、もう少し質問を残しておきますが、人生は難しいと思われます。 (ヒットマップコードで遊ぶのではなく、面白​​いとは思えない) – dan12345

1

結果は何を計画していますか?

2つのヒートマップを画面上で並べて比較する場合は、それらを1つのプロットに結合するのではなく、2つのプロットデバイスを開いて並べて並べて並べ替えて(1つのグラフを作成するよりはるかに簡単です) :

heatmap.2(mat1) 
dev.new() 
heatmap.2(mat2) 

マウスを使用して一方を他方の側にドラッグします。

2つのプロットを作成して記事を作成するために使用しているプログラムを並べて設定するのが最も簡単な場合があります。 1つのファイルに2つのヒートマップ(または他のプロット)を2つのファイルとして保存し、imagemagick、gimp、またはinkscapeなどのツールを使用して2つのファイルを1つのグラフに並べて組み合わせることができます。

関連する問題