R gridExtra:为一个tableGrob动态修改主题?

时间:2015-10-21 19:39:33

标签: r themes gridextra

我在这里阅读了Baptiste对gridextra tableGrob函数的出色解释:https://github.com/baptiste/gridextra/wiki/tableGrob

从他关于审美格式的部分:

tt1 <- ttheme_default()
tt2 <- ttheme_minimal()
tt3 <- ttheme_minimal(
  core=list(bg_params = list(fill = blues9[1:4], col=NA),
            fg_params=list(fontface=3)),
  colhead=list(fg_params=list(col="navyblue", fontface=4L)),
  rowhead=list(fg_params=list(col="orange", fontface=3L)))

grid.arrange(
  tableGrob(iris[1:4, 1:2], theme=tt1),
  tableGrob(iris[1:4, 1:2], theme=tt2),
  tableGrob(iris[1:4, 1:2], theme=tt3),
  nrow=1)

我想知道是否有可能修改一个主题&#34;在飞行中&#34;对于特定的tableGrob,例如:

grid.arrange(
  tableGrob(iris[1:4, 1:2], theme=tt1 + theme_default(core=list(fg_params=list(cex=0.7))),
  tableGrob(iris[1:4, 1:2], theme=tt2),
  tableGrob(iris[1:4, 1:2], theme=tt3),
  nrow=1)

这最后一段代码不起作用,但我想做的是修改主题&#34; tt1&#34;即时更改第一个tableGrob的核心文本大小,无需永久更改主题&#34; tt1&#34;。

谢谢!

1 个答案:

答案 0 :(得分:1)

主题似乎只是列表。您可以使用modifyList更新列表的属性。例如

grid.arrange(
  tableGrob(iris[1:4, 1:2], theme=modifyList(tt1, list(core=list(fg_params=list(cex=0.7))))),
  tableGrob(iris[1:4, 1:2], theme=tt2),
  tableGrob(iris[1:4, 1:2], theme=tt3),
  nrow=1)