热图底部的居中色键

Centering color key at bottom of heatmap

我尝试使用 gplots 包中的 heatmap.2 生成热图。我的目标是生成一个热图,在绘图区域和热图之间没有额外的 space(不包括底部的键)。通过查看一些帖子,我设法使用 lmat 将热图拟合到绘图区域(这样左侧就没有 space 了)。但是我无法将颜色键置于绘图下方的中心。结果,有一些space,因为在右侧投射了一个色标尺。 谁能告诉我如何在底部的热图中心制作颜色键(从而避免额外的 space 问题)。 我无法显示图像。我使用以下代码生成热图。

library(gplots)
dat <- read.csv("C:..../xxx.csv")
dat_matrix <- data.matrix(dat)
colors = c(seq(-2,-1,length=100),seq(-1,1,length=100),seq(1,2,length=100))
my_palette <- colorRampPalette(c("green","black","red"))(n = 299)
lmat = rbind(c(1,3),c(2,1),c(1,4))
lwid = c(1,4)
lhei = c(1,4,1.2)
heatmap.2(dat_matrix, dendrogram="none", Rowv = FALSE, Colv = FALSE,
          col = my_palette, breaks = colors, scale = "none", key = TRUE,
          density.info = "none", trace = "none", labRow = FALSE, symm = FALSE,
          symkey = TRUE, symbreaks = TRUE, lmat = lmat, lwid = lwid, lhei = lhei)

您可以使用参数 key.par 并将 mar 设置为合适的值。例如使用 dat_matrix <- as.matrix(mtcars) 和其他你的数据,我使用 mar=c(8,0,0,12)。您必须弄清楚什么 mar 最适合您的数据。

heatmap.2(dat_matrix, 
          dendrogram="none", 
          Rowv=FALSE, 
          Colv=FALSE, 
          col = my_palette, 
          breaks=colors,      
          scale="none", 
          key=TRUE, 
          key.par = list(mar= c(8, 0, 0, 12)),
          density.info="none", 
          trace="none", 
          labRow=FALSE, 
          symm=F,
          symkey=T,
          symbreaks=T, 
          lmat = lmat, 
          lwid = lwid, 
          lhei = lhei)