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


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

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)

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.