Я размещаю несколько графиков в одном изображении с помощью gridExtra::grid.arrange
и хотел бы иметь возможность сохранять комбинированный график как объект, который может быть возвращен из функции как часть списка возвращаемых объектов. В идеале я хотел бы сделать это без печати объекта сюжета.Сохранить вывод из gridExtra :: grid.arrange в объект
Код ниже создает два графика, объединяет их с grid.arrange
и пытается сохранить результат в x
. Однако x
оценивает NULL
и график распечатывается. Документация для grid.arrange
указывает мне на arrangeGrob
и предлагает, чтобы график можно отключить с помощью plot=FALSE
, но я получаю сообщение об ошибке, когда я пытаюсь это сделать, потому что FALSE
не является объектом grob.
Любые предложения по поводу того, что я не понимаю?
# R under development
# Windows 7 (32 bit)
# ggplot2 1.0.0
# gridExtra 0.9.1
p1 <- ggplot(mtcars, aes(x=factor(cyl), y=mpg)) + geom_boxplot()
p2 <- ggplot(mtcars, aes(x=factor(cyl), y=wt)) + geom_boxplot()
x <- gridExtra::grid.arrange(p1, p2)
x
В комментариях, я добавляю это изменение. Когда я пытаюсь сделать это с arrangeGrob
, я не получаю никакого вывода.
> gridExtra::arrangeGrob(p1, p2)
> print(gridExtra::arrangeGrob(p1, p2))
Error: No layers in plot
> x <- gridExtra::arrangeGrob(p1, p2)
> x
Error: No layers in plot
Попробуйте использовать 'organizGrob' вместо – hrbrmstr
@hrbrmstr: Я думаю, что небольшой ответ был бы полезен. Страница справки довольно бесполезна в этом случае, и это было не то, что я мог бы ответить на макушку, несмотря на хороший опыт. –
На самом деле это становится более странным с 'organizGrob' (я все время забываю, что код не форматируется в комментариях, поэтому я сделал редактирование вопроса). – Benjamin