Описание проблемы
Я создал объект gtable
(также gTree
grob
gDesc
) myobj
через myobj <- gridExtra::grid.arrange(g1,g2)
из двух объектов ggplot
g1
,g2
некоторое время назад, и теперь мне нужно восстановить данные, которые я использовал для создания обоих ggplots. Есть ли способ сделать это правильно?
Что я пробовал до сих пор
Я уже пытался преобразовать myobj
с помощью различных функций, например, ggpubr::as_ggplot
, в результате чего получился объект с записью waiver()
как $data
— так что безуспешно — и я также просмотрел все записи grobs
в myobj
, где я фактически нашел точки данных по сюжету (выглядит так
grobs.grobs.children.geom_point.points.5415.x1
0.04545455
), которые, однако, являются только координатами положения $\in (0,1)$ относительно. соответствующую ось. Тогда я, вероятно, смогу получить ось + диапазон осей, а затем экстраполировать исходные точки данных. Но это кажется чрезмерно трудоемким. Есть ли более простое решение для этого?
Репрекс (вроде)
Не уверен, что это на самом деле приводит к тому же объекту, что и у меня (потому что моему почти 2 года), но для начала:
library(ggplot)
# plot 1
g1 <- ggplot(mpg, aes(displ, cty)) + geom_point() + facet_grid(cols = vars(cyl))
# plot 2
g2 <- ggplot(mtcars, aes(mpg, wt, colour = factor(cyl))) + geom_point() + facet_grid(vars(cyl))
# create object
myobj <- gridExtra::grid.arrange(g1, g2, ncol=1)
# Now I would need some extract_data function to retrieve mpg and mtcars:
list_with_mpg_and_mtcars <- extract_data(myobj)
gg
илиggplot
, но все же с аргументомwaiver()
as$data
. - person R大卫   schedule 18.04.2020