R 对热图的修改

R 对热图的修改,r,graphics,heatmap,R,Graphics,Heatmap,我正在制作一个热图,不过我想分开列,并在每行之间添加一行。我很清楚,这样做会让这一切变得很好,而不是热图。但这是我老板的设想 下面是我当前热图的代码。任何关于分隔列和在每个“人”之间添加一行的建议都将不胜感激 x11 <- c(0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1

我正在制作一个热图,不过我想分开列,并在每行之间添加一行。我很清楚,这样做会让这一切变得很好,而不是热图。但这是我老板的设想

下面是我当前热图的代码。任何关于分隔列和在每个“人”之间添加一行的建议都将不胜感激

x11 <- c(0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1) 
x22 <- c(1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1)
x <- rbind(x11, x22) 
hv <- heatmap(t(x), col = c("cornflowerblue", "hotpink"), margins = c(4, 12), Colv = NA, Rowv = NA, scale = "none", xlab ="", ylab ="", main = "",  labCol=c("BP", "Cx"), cexCol =2)
legend("topright", c("No Osteomyelitis", "Osteomyelitis"), col=c("cornflowerblue", "hotpink"), bty="n", fill=c("cornflowerblue", "hotpink"))

x11我建议您切换到
gplots::heatmap.2()
,这样可以更好地控制基本相同参数的绘图

以您的好例子(+1 btw)为基础,通过添加
colsep
rowsep
sepcolor
sepwidth
参数来控制行和列之间的分隔(以及
trace='none'
,因为我不喜欢它),给出:


x11我建议您切换到
gplots::heatmap.2()
,这样可以更好地控制基本相同参数的绘图

以您的好例子(+1 btw)为基础,通过添加
colsep
rowsep
sepcolor
sepwidth
参数来控制行和列之间的分隔(以及
trace='none'
,因为我不喜欢它),给出:


x11同意,将共享我最终使用的代码。谢谢是的,同意,将共享我最终使用的代码。谢谢
hv <- heatmap.2(t(x), key=FALSE, trace="none", colsep = seq(1,nrow(x)-1),
      rowsep = seq(1,ncol(x)-1),
      sepcolor = "white",
      sepwidth = c(0.1, 0.0005), col = c("cornflowerblue", "hotpink"), margins = c(4, 12), Colv = NA, Rowv = NA, scale = "none", xlab ="", ylab ="", main = "",  labCol=c("BP", "Cx"), cexCol =2)
legend("topleft", c("No Osteomyelitis", "Osteomyelitis"), col=c("cornflowerblue", "hotpink"), bty="n", fill=c("cornflowerblue", "hotpink"))
x11 <- c(0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1) 
x22 <- c(1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1)
x <- rbind(x11, x22) 
hv <- heatmap(t(x), col = c("cornflowerblue", "hotpink"), margins = c(4, 12), Colv = NA, Rowv = NA, scale = "none", xlab ="", ylab ="", main = "",  labCol=c("BP", "Cx"), cexCol =2)
legend("topright", c("No Osteomyelitis", "Osteomyelitis"), col=c("cornflowerblue", "hotpink"), bty="n", fill=c("cornflowerblue", "hotpink"))

library(gplots)
heatmap.2(t(x), 
      col = c("cornflowerblue", "hotpink"), 
      margins = c(4, 12), 
      Colv = NA, Rowv = NA, 
      scale = "none", 
      xlab ="", 
      ylab ="", 
      main = "",
      labCol=c("BP", "Cx"), 
      cexCol = 2,
      trace = 'none',
      colsep = seq(1,nrow(x)-1),
      rowsep = seq(1,ncol(x)-1),
      sepcolor = "white",
      sepwidth = c(0.1, 0.05))