将字幕文本添加到 grid.table 图

Adding a subtitle text to a grid.table plot

我有一个与此处讨论的问题非常相似的问题: Adding text to a grid.table plot 然而,我的最终目标是让标题距 table 顶部 60 毫米,并在标题下方 2 毫米处设置副标题。 我想出了这个几乎存在但不存在的代码,意思是,字幕距 table 顶部 2 毫米,标题下方 2 毫米,正如预期的那样。

library(gridExtra)
  library(grid)
  library(gtable)
  d <- head(iris)
  table <- tableGrob(d)
  
  title <- textGrob("Title",gp=gpar(fontsize=50))
  subtitle <- textGrob("subtitle", x=0, hjust=0,
                       gp=gpar( fontface="italic"))
  
  padding <- unit(2,"mm")
  
  table <- gtable_add_rows(table, 
                           heights = grobHeight(subtitle)+ padding,
                           pos = 0)
  
  padding <- unit(60,"mm")
  table <- gtable_add_rows(table, 
                           heights = grobHeight(title) + padding,
                           pos = 0)
  
  table <- gtable_add_grob(table, list(title, subtitle),
                           t=c(1, 2), l=c(1,1), 
                           r=ncol(table))
  png('tmp.png', width = 480, height = 480, bg = "#FFECDB")
  grid.newpage()
  grid.draw(table)
  dev.off()

我想知道是否有人对如何修复它有建议。 谢谢

我是网格表的新手,但看起来你的 grobs 的顺序很重要,至少对于填充。这是你期待的结果吗?

library(gridExtra)
library(grid)
library(gtable)

d <- head(iris)
table <- tableGrob(d)

title <- textGrob("Title", gp = gpar(fontsize=50))
subtitle <- textGrob("subtitle", x=0, hjust=0, gp=gpar( fontface="italic"))

table <- gtable_add_rows(table, heights = grobHeight(subtitle) + unit(58,"mm"), pos = 0)
table <- gtable_add_rows(table, heights = grobHeight(title) - unit(60,"mm"), pos = 0)
table <- gtable_add_grob(table, list(title, subtitle), t=c(1,2), l=c(1,1), r=ncol(table))

png('tmp.png', width = 480, height = 480, bg = "#FFECDB")

grid.newpage()
grid.draw(table)

dev.off()