Як я можу програмно сказати, скільки граней має ggplot?


13

Нижче наведено код та графік.

Графік має три грані. Де the_plotя можу знайти три аспекти? Так, я можу отримати це з mtcarsфрейму даних the_plot$data, але я не хочу відтворювати аналіз даних. Швидше, я хочу оглянути графічні елементи the_plot, тому мені не доведеться дублювати логіку програми в декількох місцях. the_plot$facetне показує нічого, що я розпізнаю, а також інших змінних сюжету.

Я використовую tidyverse 1.3.0.

library(tidyverse)
data(mtcars)
the_plot<-ggplot(mtcars, aes(mpg, disp, group=cyl)) + facet_wrap(~cyl) + geom_point()
the_plot

гранований сюжет


Можливо , ggplot_build(the_plot)$layout$layoutз stackoverflow.com/questions/44107119 / ...
MrFlick

Додайте якісь деталі, the_plotце не те, що ви бачите в сюжеті, а опис того, що ви хочете побудувати (дані, відображення, тема тощо). Коли ви пишете the_plotна консолі, ви дійсно дзвоните print(the_plot), що запускає процес, який реалізує масштаби, кількість та положення граней тощо, а потім виводить графічні пристрої на поля, рядки та текст.
MrGumble

Відповіді:


12

Ви можете отримати доступ до даних ggplot за допомогою функції gg_build () -

out <- ggplot_build(the_plot)

length(levels(out$data[[1]]$PANEL))
[1] 3


8

Інший метод

library(ggplot2)
data(mtcars)
the_plot<-ggplot(mtcars, aes(mpg, disp, group=cyl)) + facet_wrap(~cyl) + geom_point()
pb <- ggplot_build(the_plot)
pb$layout$layout$PANEL
#> [1] 1 2 3
#> Levels: 1 2 3

Створено 2020-04-21 пакетом reprex (v0.3.0)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.