Wie kann ich programmgesteuert feststellen, wie viele Facetten ein ggplot hat?

13

Unten finden Sie Code und eine Grafik.

Das Diagramm hat drei Facetten. Wo the_plotkann ich feststellen, dass es drei Facetten hat? Ja, ich könnte das aus dem mtcarsDatenrahmen erhalten, oder the_plot$data, aber ich möchte die Datenanalyse nicht neu erstellen. Vielmehr möchte ich die grafischen Elemente von untersuchen the_plot, damit ich die Anwendungslogik nicht an mehreren Stellen duplizieren muss. the_plot$facetzeigt nichts, was ich erkenne, noch die anderen Plotvariablen.

Ich benutze tidyverse 1.3.0.

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

facettierte Handlung

dfrankow
quelle
Möglicherweise ggplot_build(the_plot)$layout$layoutvon stackoverflow.com/questions/44107119/…
MrFlick
Fügen Sie einige Details hinzu. the_plotSie sehen nicht das, was Sie im Diagramm sehen, sondern eine Beschreibung dessen, was Sie zeichnen möchten (Daten, Zuordnung, Thema usw.). Wenn Sie the_plotin die Konsole schreiben , rufen Sie wirklich an print(the_plot), wodurch ein Prozess gestartet wird, der die Skalierung, Anzahl und Position von Facetten usw. erkennt und dann Felder, Linien und Text an ein grafisches Gerät ausgibt.
MrGumble

Antworten:

12

Sie können mit der Funktion gg_build () - auf die ggplot-Daten zugreifen

out <- ggplot_build(the_plot)

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

Eine andere Methode

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

Erstellt am 21.04.2020 durch das reprex-Paket (v0.3.0)

Yang
quelle