11

我正在尝试使用heatmap.2但我没有得到单元格边框来制作热图。如果我设置了参数sepwidthsepcolor它不起作用,我必须包含colsepandrowsep参数但仍然这样做,一些单元格边框没有绘制,有什么想法吗?

heatmap.2(as.matrix(df), key=F, trace="none", ColSideColors=colorside, 
                         cexRow=0.6, breaks=bk1, col=colors2, 
                         lmat=rbind(c(0,0), c(0,4), c(0,1), c(3,2), c(0,0)),
                         lhei=c(0.4,0.3,0.05,0.4,0.6), 
                         sepwidth=c(0.01, 0.01), sepcolor="black", 
                         colsep=1:length(df), rowsep=1:length(df))
4

2 回答 2

27

看来您的问题在于colsepandrowsep参数。从帮助文件:

colsep, rowsep, sepcolor (可选)整数向量,指示哪些列或行应与前面的列或行由一个狭窄的颜色空间分隔sepcolor

您的代码不是“指示应分隔哪些列或行”,而是创建一个向量,只要矩阵中的元素数。如果您设置colsep=c(1,3)了 ,则第 1 列和第 2 列之间的分隔符以及第 3 列和第 4 列之间的分隔符将被着色。我不相信有一种方法可以在不使用colsepandrowsep参数的情况下为单元格边框着色。默认情况下,不绘制单元格边框,除非这些参数被赋予了值。

# First, a reproducible data set
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.1,0.1),
           sepcolor="purple",
           colsep=1:ncol(mat),
           rowsep=1:nrow(mat))

在此处输入图像描述

于 2014-02-11T02:11:16.983 回答
-4

设置 heatmap.2(as.matrix(df), key=F, trace="both" ...

于 2016-10-19T19:45:28.307 回答