2017-05-17 5 views
2

ヒートマップで行と列の間のsepwidthを増やそうとしています。 私はsepwidthを使用しますが、sepwidthを大きくしようとすると、列や行が右に移動しません。ここでsepwidth heatmap.2(gplots)を設定する

は一例であり

library(gplots) 
mat = matrix(rnorm(100), ncol=5) 
colorside = gray(1:5/5) 
bk1 = seq(min(mat),max(mat),length.out=11) 
col = redgreen(10) 

# And now the heatmap 
heatmap.2(mat, 
      key=FALSE, 
      trace="none", 
      ColSideColors=colorside, 
      cexRow=0.6, 
      breaks=bk1, 
      col=col, 
      sepwidth=c(0.4,0.4), 
      sepcolor="purple", 
      colsep=1:ncol(mat), 
      rowsep=1:nrow(mat)) 

は、任意の助けてくれてありがとう。

答えて

2

私はあなたが望むものを完全に理解しているかどうかはわかりません。とにかく私の推測では、最初の列の前と最初の行の上にスペースを追加したいということです。

sepwidthは、列と行の間のスペース量を定義し、ベクトルcolseprowsepの値に基づいてその領域を適用します。あなたのケースでは、簡単な次のコードのように、以前のcolseprowsepの定義の1つの単位を開始する必要があります。

setseed(8765) ## added for reproducibility 

# Your code 
library(gplots) 
mat = matrix(rnorm(100), ncol=5) 
colorside = gray(1:5/5) 
bk1 = seq(min(mat),max(mat),length.out=11) 
col = redgreen(10) 

## First call to get "hm1" 
hm1 <- heatmap.2(mat, 
       key=FALSE, 
       trace="none", 
       ColSideColors=colorside, 
       cexRow=0.6, 
       breaks=bk1, 
       col=col, 
       sepwidth=c(0.4,0.4), 
       sepcolor="purple", 
       colsep=0:ncol(mat), ## changed 
       rowsep=0:nrow(mat)) ## changed 

# Look at lwid and define a new one to use 
hm1$layout$lwid 
# [1] 1.5 4.0 
my_lwid <- c(1.0, 4.5) 

## call with altered lwid 
hm2 <- heatmap.2(mat, 
        key=FALSE, 
        trace="none", 
        ColSideColors=colorside, 
        cexRow=0.6, 
        breaks=bk1, 
        col=col, 
        sepwidth=c(0.4,0.4), 
        sepcolor="purple", 
        lwid = my_lwid,  ## added 
        colsep=0:ncol(mat), 
        rowsep=0:nrow(mat)) 
hm2$layout$lwid 

、私はこれがあなたが望んでいるかどうかをお知らせください。

+0

ありがとうございます。私はsepwidthを大きくすると、次の列/行からスペースを取るので、実際には列/行は移動しませんが、次の列または行からこの領域が取られます。 – ThePooh

+0

あなたができることはグラフ内の部品の幅を定義する 'lwid'を使って作業することです。こうすることで、ヒートマップが占める水平スペースの割合を増やすことができます(行デンドログラムとは対照的に)。 – KoenV

+0

ありがとうございます。試してみる – ThePooh

関連する問題