如何使用tableGrob显示表格标题?

4
考虑这个例子。
library(gridExtra)
library(grid)

d1 <- head(iris[,1:3]) %>% as_tibble()
d2 <- head(iris[,2:5]) %>% as_tibble()

grid.arrange(tableGrob(d1),
             tableGrob(d2))

这很好,但我错过了数据框的标题!如何自动将它们添加到图片中?

谢谢!

这里提供了一个enter image description here图像。

2个回答

5
你可以使用ggplot,它是一个强大的数据可视化工具。
library(ggplot2)

dd1 <- ggplot() + annotation_custom(tableGrob(d1)) + labs(title = 'd1')
dd2 <- ggplot() + annotation_custom(tableGrob(d2)) + labs(title = 'd2')
grid.arrange(dd1, dd2, nrow = 2)

enter image description here


非常好!只是一个后续问题。假设我有数十个像这样的小数据框。是否有一种方法可以使用marrangeGrobtableGrob,以便在每个页面上获得4x4图表的pdf? - ℕʘʘḆḽḘ
我不确定。昨天我刚刚接触到annotation_customtableGrob... - Sotos
好的,谢谢!不过你知道怎么去掉这个灰色背景吗?看起来有点奇怪!>) - ℕʘʘḆḽḘ
这个链接会有所帮助:https://dev59.com/VWgv5IYBdhLWcg3wFs2l。如果你遇到任何问题,请让我知道。 - Sotos

3
我建议在gtable中添加一个textGrob。
library(magrittr)

add_title <- function(g, title, padding = unit(2,"mm"), lpos=1, ...){
  tg <- textGrob(title, ...)
  g %>%
    gtable::gtable_add_rows(heights = grobHeight(tg) + padding, pos = 0L) %>% 
    gtable::gtable_add_grob(tg, t=1,b=1,l=lpos,r=ncol(g))

}


grid.arrange(tableGrob(d1) %>% add_title('a) First title', gp=gpar(fontsize=14, fontface=4), hjust=0, x=0, lpos=2),
             tableGrob(d2) %>% add_title('b) Second title', gp=gpar(fontsize=14, fontface=4), hjust=0, x=0, lpos=2))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接