如何以编程方式确定ggplot有多少个方面?


13

下面是代码和图形。

该图具有三个方面。the_plot我在哪里可以找到它的三个方面?是的,我可以从mtcars数据框或中获取数据the_plot$data,但是我不想重新创建数据分析。相反,我想检查的图形元素the_plot,因此不必在多个地方重复应用程序逻辑。 the_plot$facet不会显示我所识别的任何内容,其他图变量也不会显示。

我正在使用tidyverse 1.3.0。

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

多面情节


可能ggplot_build(the_plot)$layout$layoutstackoverflow.com/questions/44107119/...
MrFlick

一定要添加一些细节,您the_plot所需要的不是您在绘图中看到的,而是您要绘图的描述(数据,映射,主题等)。the_plot在控制台中书写时,您实际上是在调用print(the_plot),这会启动一个过程,该过程实现刻面的比例,数量和位置等,然后将方框,线条和文本输出到图形设备。
MrGumble

Answers:


12

您可以使用gg_build()-功能访问ggplot数据

out <- ggplot_build(the_plot)

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


8

另一种方法

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

reprex软件包(v0.3.0)创建于2020-04-21

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.