gridExtra вращать имена строк и упорядочивать имена столбцов

У меня два вопроса

1. Когда я использую tableGrob, чтобы установить несколько имен строк для rangeGrob, как я могу повернуть имена, я заметил, что кто-то опубликовал похожий вопрос R grid.table вращение заголовка столбца. Однако я потерпел неудачу здесь

library(grid)
library(gridExtra)
gs <- lapply(1:9, function(ii)
grobTree(rectGrob(gp=gpar(fill=ii, alpha=0.5)), textGrob(ii)))
gR <- arrangeGrob(grobs=gs, ncol=4,
                  top="top label",
                  right="right label")
tt <- ttheme_default(base_size = 8,
                     rowhead=list(fg_params=list(rot=90)))
lt <- tableGrob(c("", "134442243", "5425376", "938372378"),
                theme = tt)
cb <- cbind(lt, gR, size = "last")
grid.newpage()
grid.draw(cb)

2. Когда я устанавливаю несколько xlabels для rangeGrob следующим образом, grobs довольно узкие

tt <- ttheme_default(colhead=list(fg_params = list(parse=F)))
bt <- tableGrob(matrix(c("    1    ", "2", "3", "4", ""),ncol = 5), theme = tt)
rb <- rbind(gR, bt, size = "last")
# the width of each grob is changed by `bt`
grid.newpage()
grid.draw(rb)

Кажется, что каждая ширина гроба связана с каждой шириной xlabel. Как я могу сохранить ширину гроба и поместить xlabel на среднее дно гроба?

1 ответ

Решение

Данные, которые вы передаете в tableGrob, не имеют имен строк, это просто вектор, который тематически core аргумент,

tt <- ttheme_default(base_size = 8,
                     core = list(fg_params=list(rot=90)))

Если вы хотите, чтобы первый gtable установил ширину объединенного gtable, используйте "first", а не "last"

rbind(gR, bt, size = "first")
Другие вопросы по тегам