Описание проблемы
Я создал объект gtable
(также gTree
grob
gDesc
) myobj
через myobj <- gridExtra::grid.arrange(g1,g2)
из двух ggplot
объектов g1
, g2
некоторое время go и теперь мне нужно восстановить данные, которые я использовал для создания обоих 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)