32

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

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

4

2 に答える 2

76

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

layout(mat = lmat, widths = lwid, heights = lhei)

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

  1. ヒートマップ、
  2. 行デンドログラム、
  3. 列樹状図、

したがって、デフォルト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

于 2013-03-12T14:56:48.647 に答える
1

かなり長いコードの par 呼び出しによって定義された指定された領域がありheatmap.2、元の作成者やこれらの部分の「改訂者」は見たことがありませんが、R ヘルプを参照することもあります。メイン プロットの次元は、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)
于 2013-03-12T01:41:25.293 に答える