Р: Возможно ли извлечь исходные данные из объекта gtable, созданного с помощью grid.arrange и ggplot? - PullRequest
1 голос
/ 17 апреля 2020

Описание проблемы

Я создал объект 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)

1 Ответ

1 голос
/ 20 апреля 2020

Вы не можете; на этом этапе (а именно, после ggplotGrob) данные были обработаны в графические объекты, и отображение обычно необратимо, как омлет.

Если вы отчаянно для вернув некоторые значения, вы можете проверить отдельные значения, соответствующие точкам на графике, например,

myobj$grobs[[2]]$grobs[[2]]$children[[3]][c('x','y')]

$x
 [1] 0.525145067698259native 0.587040618955513native
 [3] 0.525145067698259native 0.89651837524178native 
 [5] 0.819148936170213native 0.954545454545455native
 [7] 0.474854932301741native 0.699226305609285native
 [9] 0.648936170212766native 0.819148936170213native
[11] 0.470986460348163native

$y
 [1] 0.233037353850445native  0.435264173310709native 
 [3] 0.425966388507938native  0.205143999442133native 
 [5] 0.0691638967016109native 0.12030171311685native  
 [7] 0.266741823760489native  0.143546175123777native 
 [9] 0.191197322237977native  0.0454545454545455native
[11] 0.339961879082309native 
...