我想在单行热图中为列添加黑色边框,并在列之间添加一些空格,如下所示:
我尝试在breaks
和seq
的列之间添加空格,并为每个列添加黑色边框,但我不能。
library(graphics)
new <- matrix(c(1.3,3,4,6,1.2,1,0.8))
image(new, axes=F)
答案 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)