web-dev-qa-db-ja.com

R heatmap.2のカラーキーの移動(gplotsパッケージの機能)

Heatmap.2ヘルプマニュアルを数回読みました。また、さまざまなオンラインチュートリアルでは、カラーキーを別の位置に移動する方法については読みませんでした。今、私はそれが可能かどうか疑問に思っていますか?

Gplotsパッケージのheatmap.2関数を使用している場合、デフォルトで色キーは左上隅にあります。

29
user2015601

_heatmap.2_プロットの各要素の位置は、lmatlhei、およびlwidパラメーターを使用して制御できます。これらは_heatmap.2_によってlayoutコマンドに次のように渡されます。

_layout(mat = lmat, widths = lwid, heights = lhei)
_

lmatは、画面の分割方法を説明するマトリックスです。デフォルトでは、heatmap.2は画面を4つの要素グリッドに分割するため、lmatは2x2マトリックスです。マトリックスの各要素の番号は、次の4つのプロットをプロットする順序を示します。Heatmap.2は、次の順序で要素をプロットします。

  1. ヒートマップ、
  2. 行系統樹、
  3. カラム樹状図、
  4. キー

したがって、デフォルトのlmatは次のとおりです。

_> rbind(4:3,2:1)
     [,1] [,2]
[1,]    4    3
[2,]    2    1
_

たとえば、指定するヒートマップの下にキーを配置する場合:

_> lmat = rbind(c(0,3),c(2,1),c(0,4))
> lmat
     [,1] [,2]
[1,]    0    3
[2,]    2    1
[3,]    0    4
_

lwidlheiは、各行と列の高さと幅を指定するベクトルです。デフォルトは両方ともc(1.5,4)です。 lmatを変更する場合、これらも変更する必要があるか、おそらく変更する必要があります。上記の例では、他のすべての要素を同じサイズに保ちたいが、下部に薄い色のキーが必要な場合、次のように設定できます。

_>lwid = c(1.5,4)
>lhei = c(1.5,4,1)
_

これで、ヒートマップをプロットする準備ができました。

_>heatmap.2(x,...,lmat = lmat, lwid = lwid, lhei = lhei)
_

これにより、ヒートマップの上に列の樹形図、左側に行の樹形図、その下にキーが表示されたヒートマップがプロットされます。残念ながら、キーの見出しとラベルはハードコードされています。

layoutの仕組みの詳細については、_?layout_を参照してください。

66
Ian Sudbery

heatmap.2のかなり長いコードでpar呼び出しによって定義された特定の領域があり、R-helpを参照することもありますが、元の作者やこれらの部分の「リバイザー」を見たことはありません。主なプロットの寸法は、2要素ベクトルmarginsによって設定されます。変更が必要になる可能性があるいくつかの場所を次に示します。

#1) 
if (!missing(RowSideColors)) {
    par(mar = c(margins[1], 0, 0, 0.5))
    image(rbind(1:nr), col = RowSideColors[rowInd], axes = FALSE)

#2)
if (!missing(ColSideColors)) {
    par(mar = c(0.5, 0, 0, margins[2]))
    image(cbind(1:nc), col = ColSideColors[colInd], axes = FALSE)

#3)
par(mar = c(margins[1], 0, 0, margins[2]))

#4)
par(mar = c(margins[1], 0, 0, 0))

#5)
par(mar = c(0, 0, if (!is.null(main)) 5 else 0, margins[2]))

#6
if (key) {
    par(mar = c(5, 4, 2, 1), cex = 0.75)
1
42-