Comment puis-je déterminer par programme le nombre de facettes d'un ggplot?

13

Voici le code et un graphique.

Le graphique a trois facettes. Où the_plotpuis-je trouver qu'il a trois facettes? Oui, je pourrais l'obtenir à partir du mtcarsbloc de données, ou the_plot$data, mais je ne veux pas recréer l'analyse des données. Je souhaite plutôt inspecter les éléments graphiques de the_plot, donc je n'ai pas à dupliquer la logique d'application à plusieurs endroits. the_plot$facetne montre rien que je reconnaisse, pas plus que les autres variables de tracé.

J'utilise tidyverse 1.3.0.

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

parcelle à facettes

dfrankow
la source
Peut-être ggplot_build(the_plot)$layout$layoutsur stackoverflow.com/questions/44107119/…
MrFlick
Ajoutez des détails, ce the_plotn'est pas ce que vous voyez dans l'intrigue, mais une description de ce que vous voulez tracer (données, cartographie, thème, etc.). Lorsque vous écrivez the_plotdans la console, vous appelez vraiment print(the_plot), ce qui démarre un processus qui réalise les échelles, le nombre et la position des facettes, etc., puis sort des boîtes, des lignes et du texte vers un périphérique graphique.
MrGumble

Réponses:

12

vous pouvez accéder aux données ggplot avec la fonction gg_build () -

out <- ggplot_build(the_plot)

length(levels(out$data[[1]]$PANEL))
[1] 3
user12256545
la source
8

Une autre méthode

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

Créé le 2020-04-21 par le package reprex (v0.3.0)

Yang
la source