为热图中的列添加黑色边框,并添加空格以分隔它们

时间:2016-01-03 18:51:54

标签: r heatmap

我想在单行热图中为列添加黑色边框,并在列之间添加一些空格,如下所示:

enter image description here

我尝试在breaksseq的列之间添加空格,并为每个列添加黑色边框,但我不能。

library(graphics)
new <- matrix(c(1.3,3,4,6,1.2,1,0.8))
image(new, axes=F)

enter image description here

2 个答案:

答案 0 :(得分:1)

有几种方法可以做到这一点,无论是在base-R还是在ggplot2中。您想要的图像看起来很像一个条形图。由于在您的示例中有相同颜色的不同值的条形图,我创建了一些“分类”。对于数据帧中的所有必要数据(对于两种解决方案),这都更容易:

dat <- data.frame(new=c(1.3,3,4,6,1.2,1,0.8),
                  x=1:nrow(new),
                  y=1)
dat$bin <- cut(dat$new,breaks=seq(0,6,by=1.5),include.lowest=T,
               labels=F)

在基地R:

#create a color palette
mycols <- c("red","orange","yellow","white")

barplot(dat$y, col=mycols[dat$bin], axes=F)

在ggplot2中:

p1 <- ggplot(dat, aes(x=x,y=y,fill=bin))+
  geom_bar(stat="identity",col="black",size=2) +
  scale_fill_gradient(low="red",high="white")+
  theme_minimal()+
  theme(legend.position="none",
        axis.line=element_blank(),
        axis.text=element_blank(),
        panel.grid=element_blank(),
        axis.title=element_blank())

答案 1 :(得分:1)

尝试pheatmap包,你可以这样做:

new <- matrix(c(1.3,3,4,6,1.2,1,0.8))
pheatmap(t(new), cluster_rows = F, cluster_cols = F, border_color = "black", gaps_col = 1:6)