2017-05-17 35 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定義一個單元,就像下面的代碼:

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