Come posso dire a livello di codice quante sfaccettature ha un ggplot?


13

Di seguito è riportato un codice e un grafico.

Il grafico ha tre facce. Dove the_plotposso trovare che ha tre sfaccettature? Sì, potrei ottenerlo dal mtcarsframe di dati o the_plot$data, ma non voglio ricreare l'analisi dei dati. Piuttosto, voglio ispezionare gli elementi grafici di the_plot, quindi non devo duplicare la logica dell'applicazione in più punti. the_plot$facetnon mostra nulla che riconosco, né le altre variabili della trama.

Sto usando tidyverse 1.3.0.

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

trama sfaccettata


Eventualmente ggplot_build(the_plot)$layout$layoutda stackoverflow.com/questions/44107119/...
MrFlick

Aggiungi alcuni dettagli, il tuo the_plotnon è quello che vedi nella trama, ma una descrizione di ciò che vuoi essere tracciato (dati, mappatura, tema, ecc.). Quando scrivi the_plotnella console, stai davvero chiamando print(the_plot), il che avvia un processo che realizza le scale, il numero e la posizione delle sfaccettature, ecc. E quindi emette riquadri, linee e testo su un dispositivo grafico.
MrGumble il

Risposte:


12

puoi accedere ai dati di ggplot con la funzione gg_build ()

out <- ggplot_build(the_plot)

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


8

Un altro metodo

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

Creato il 2020-04-21 dal pacchetto reprex (v0.3.0)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.