Невозможно передать textGrob в качестве основного для do.call("rangeGrob")
В то время как
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!"
Мне нужно, чтобы основным был textGrob для установки размера шрифта и шрифта лица. У кого-нибудь есть идея, что я делаю не так?
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"))
После нескольких часов поисков в Google я нашел ответ сразу после публикации вопроса.....
Следующие работы:
test <- do.call("grid.arrange",c(plots.list, ncol=2, main =substitute(textGrob("test"),env = parent.frame())))