0

尽管

test <- do.call("arrangeGrob", c(plots.list[1:2],ncol=2,main=("test")) 

工作得很好,

test <- do.call("arrangeGrob", c(plots.list[1:2],ncol=2,main=textGrob("test")))

给出以下错误:

"Error in arrangeGrob(list(grobs = list(list(x = 0.5, y = 0.5, width = 1, : input must be grobs!"

我需要 main 成为 textGrob 才能设置字体大小和字体。任何人都知道我做错了什么?

4

2 回答 2

2

问题来自于参数列表do.call不正确的事实,

c(list(1, 2), ncol=1, textGrob("a"))

“公开” textGrob 的内容,而您确实想附加两个列表,

c(list(1, 2), list(ncol=1, textGrob("a")))

应用于您的问题,这变成

do.call("grid.arrange", c(plots.list[1:2],list(ncol=2, main=textGrob("test")))) 

但请注意,即将发布的 gridExtra (>= 2.0.0) 版本不再识别main,您应该top使用

do.call("grid.arrange", c(plots.list[1:2],list(ncol=2, top=textGrob("test")))) 

而且,既然arrangeGrob获得了新的grobs论点,你就不再需要do.call了,

grid.arrange(grobs=plots.list[1:2], ncol=2, top=textGrob("test"))
于 2015-07-11T23:18:54.773 回答
0

经过几个小时的谷歌搜索,我在发布问题后直接找到了答案......

以下作品:

test <- do.call("grid.arrange",c(plots.list, ncol=2, main =substitute(textGrob("test"),env = parent.frame())))
于 2015-07-11T23:07:06.577 回答