аранжироватьGrob с объектами gtable

Из https://stackoverflow.com/a/13295880 я узнал, как расположить два графика с выровненными областями графика.

Мой вопрос: как я могу получить объект аранжированных участков?

Пример:

require(ggplot2)
require(gridExtra)

A <- ggplot(CO2, aes(x=Plant)) + geom_bar() +coord_flip() 
B <- ggplot(CO2, aes(x=Type)) + geom_bar() +coord_flip() 

gA <- ggplot_gtable(ggplot_build(A))
gB <- ggplot_gtable(ggplot_build(B))
maxWidth = grid::unit.pmax(gA$widths[2:3], gB$widths[2:3])
gA$widths[2:3] <- as.list(maxWidth)
gB$widths[2:3] <- as.list(maxWidth)

## works:
grid.arrange(gA, gB, ncol=1)

## does not work:
theplot <- grid.arrange(gA, gB, ncol=1, plot=FALSE)

person Andreas    schedule 11.04.2013    source источник
comment
нет plot аргумента для grid.arrange   -  person baptiste    schedule 11.04.2013
comment
@baptiste На странице справки grid.arrange есть: Value: return a frame grob; side-effect (plotting) if plot=T   -  person Andreas    schedule 11.04.2013
comment
хороший улов, страница справки не обновлялась с ранней версии, где она была удалена.   -  person baptiste    schedule 11.04.2013
comment
я обновил страницу справки (на github), и теперь grid.arrange также возвращает гроб невидимо.   -  person baptiste    schedule 11.04.2013
comment
Очень хорошо! Это будет удобно. Очень признателен. К сожалению, у меня недостаточно репутации, чтобы проголосовать за комментарий, извините :-(   -  person Andreas    schedule 11.04.2013
comment
Задав этот вопрос, я заработал достаточно репутации, поэтому проголосовал за него. Спасибо еще раз.   -  person Andreas    schedule 11.04.2013
comment
спасибо, но я не думаю, что голосование за комментарии имеет большое значение (насколько я понимаю, эта функция присутствует только для предотвращения бесконечных потоков «Я тоже»!.)   -  person baptiste    schedule 11.04.2013


Ответы (1)


Используйте функцию arrangeGrob(), чтобы сохранить оба графика как объект.

theplot <- arrangeGrob(gA, gB, ncol=1)
person Didzis Elferts    schedule 11.04.2013
comment
у меня не работает: Error in arrangeGrob(gA, gB, ncol = 1, plot = FALSE) : input must be grobs! - person Andreas; 11.04.2013