gridExtra 旋转行名和排列列名

gridExtra rotate row names and arrange column names

我有两个问题

1.When 我使用 tableGrobarrangeGrob 设置多行名称,如何旋转名称,我注意到有人发布了类似的问题 。然而,我在这里失败了

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.When 我为 arrangeGrob 设置了多个 xlabels,如下所示,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)

似乎每个 grob 宽度都与每个 xlabel 宽度相关。如何保持 grob 宽度并将 xlabel 放在 grob 的中间底部?

您传递给 tableGrob 的数据没有行名称,它只是一个向量,以 core 参数为主题,

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

如果您希望第一个 gtable 设置组合 gtable 的宽度,请使用 "first" 而不是 "last"

rbind(gR, bt, size = "first")