R 设置sepwidth热图。2(gplots)

R 设置sepwidth热图。2(gplots),r,R,我正试图增加热图中行和列之间的宽度。 我使用sepwidth,但是当我尝试增加sepwidth时,它不会向右移动列或行 这里有一个例子 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,

我正试图增加热图中行和列之间的宽度。 我使用sepwidth,但是当我尝试增加sepwidth时,它不会向右移动列或行

这里有一个例子

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))

谢谢你的帮助。

我不确定我是否完全理解你想要什么。无论如何,我的猜测是,您希望在第一列之前和第一行之上添加空格

sepwidth
定义列和行之间的空间量,并基于向量
colsep
rowsep
中的值应用该空间。在您的情况下,您只需在
colsep
rowsep
的定义中提前启动一个单元,如下代码所示:

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
setseed(8765)##增加了再现性
#你的代码
图书馆(gplots)
mat=矩阵(rnorm(100),ncol=5)
色边=灰色(1:5/5)
bk1=序号(最小值(垫)、最大值(垫)、伸出长度=11)
颜色=红绿色(10)
##第一次呼叫获取“hm1”

hm1谢谢,但是我注意到,当我增加sepwidth时,它只从下一列/行占用一个空间,所以它实际上不会移动列/行,而是从下一列或行占用这个空间。我认为这种行为是内置的。您可以使用
lwid
,它定义了图形中零件的宽度。通过这种方式,可以增加热图占用的水平空间比例(与行树状图相反)。