Jak mogę programowo stwierdzić, ile aspektów ma ggplot?

13

Poniżej znajduje się kod i wykres.

Wykres ma trzy aspekty. Gdzie the_plotmogę znaleźć trzy aspekty? Tak, mogę to uzyskać z mtcarsramki danych lub the_plot$data, ale nie chcę odtwarzać analizy danych. Chcę raczej sprawdzić elementy graficzne the_plot, więc nie muszę powielać logiki aplikacji w wielu miejscach. the_plot$facetnie pokazuje niczego, co rozpoznaję, podobnie jak inne zmienne wykresu.

Używam tidyverse 1.3.0.

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

fasetowana fabuła

dfrankow
źródło
Prawdopodobnie ggplot_build(the_plot)$layout$layoutz stackoverflow.com/questions/44107119/…
MrFlick
Dodaj kilka szczegółów, the_plotnie jest to, co widzisz na fabule, ale opis tego, co chcesz narysować (dane, mapowanie, motyw itp.). Kiedy piszesz the_plotw konsoli, naprawdę dzwonisz print(the_plot), co rozpoczyna proces, który realizuje skalę, liczbę i położenie aspektów itp., A następnie wysyła pola, linie i tekst do urządzenia graficznego.
MrGumble

Odpowiedzi:

12

możesz uzyskać dostęp do danych ggplot za pomocą funkcji gg_build ()

out <- ggplot_build(the_plot)

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

użytkownik12256545
źródło
8

Inna metoda

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

Utworzono 2020-04-21 przez pakiet reprezentx (v0.3.0)

Yang
źródło