как показать заголовок таблицы с помощью tableGrob?

Рассмотрим этот пример

library(gridExtra)
library(grid)

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

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

что дает введите здесь описание изображения

Это действительно хорошо, но мне не хватает названий фреймов данных! Как я могу добавить их к картинке автоматически?

Спасибо!


person ℕʘʘḆḽḘ    schedule 16.01.2019    source источник


Ответы (2)


Вы можете использовать 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)

введите здесь описание изображения

person Sotos    schedule 16.01.2019
comment
довольно мило!!! просто продолжение. Предположим, у меня есть десятки таких небольших фреймов данных. Есть ли способ использовать marrangeGrob с tableGrob, чтобы получить PDF-файл с диаграммами 4x4 на каждой странице? - person ℕʘʘḆḽḘ; 16.01.2019
comment
Я не уверена. Вчера буквально наткнулся на annotation_custom и tableGrob... - person Sotos; 16.01.2019
comment
хорошо спасибо! Вы знаете, как избавиться от серого фона? выглядит немного странно! ›) - person ℕʘʘḆḽḘ; 16.01.2019
comment
Эта ссылка поможет. Дайте мне знать, если у вас возникнут какие-либо проблемы - person Sotos; 16.01.2019

Я бы предложил добавить textGrob в gtable,

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))
person user10930584    schedule 17.01.2019