Если вам не нужно использовать arrangeGrob
: можно извлечь grobs из макета gtable
. Настройка макета занимает больше времени, но извлечение необходимого элемента выполняется просто.
library(gtable)
library(grid)
gt = gtable(unit(c(3.5, 7.5), "null"), unit(1, "null"))
gt = gtable_add_grob(gt, ggplotGrob(g1), l = 1, t = 1)
gt = gtable_add_grob(gt, ggplotGrob(g2), l = 2, t = 1)
plot(gt)
plot(gt[, 1])
plot(gt[, 2])
Если вы хотите сохранить размер и положение извлеченного графика такими же, как его размер и положение на комбинированном графике:
EDIT: Используя предложение Батиста:
gt = gtable(unit(c(3.5, 7.5), "null"), unit(1, "null"))
gt = gtable_add_grob(gt, ggplotGrob(g1), name = "g1", l = 1, t = 1)
gt = gtable_add_grob(gt, ggplotGrob(g2), name = "g2", l = 2, t = 1)
grid.newpage()
grid.draw(gtable_filter(gt, "g2", trim = FALSE))
grid.newpage()
grid.draw(gtable_filter(gt, "g1", trim = FALSE))
Оригинал:
# Keep g2
p2 = gt
p2$layout = gt$layout[-1, ]
p2$grobs = gt$grobs[-1]
grid.newpage()
grid.draw(p2)
# Keep g1
p1 = gt
p1$layout = gt$layout[-2, ]
p1$grobs = gt$grobs[-2]
grid.newpage()
grid.draw(p1)
person
Sandy Muspratt
schedule
12.06.2015