使用热图绘制单元格边框

时间:2014-02-07 10:12:41

标签: r heatmap gplots

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

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

2 个答案:

答案 0 :(得分:22)

您的问题似乎与colseprowsep参数有关。从帮助文件:

  

colsep, rowsep, sepcolor(可选)整数向量指示   哪些列或行应与前面的列分开   或用狭窄的颜色sepcolor

的行

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

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

enter image description here

答案 1 :(得分:-3)

组     heatmap.2(as.matrix(df),key = F,trace =“both”......