在同一表达式中绘制和处理 ggplot2 对象

Plot and process ggplot2 object in same expression

我想构建我的 GGplot 图并绘制其间的步骤。如果不先赋值再绘图就可以做到吗?

p0 <- ggplot(mtcars, aes(mpg, cyl)) + geom_point()
p0
p1 <- p0 + scale_x_sqrt()
p1
p2 <- p1 + facet_wrap(~gear)
p2

类似

ggplot(mtcars, aes(mpg, cyl)) + geom_point() %P>%
 + scale_x_sqrt() %P>%
 + facet_wrap(~gear)

生成三个图,但 returns 什么都没有

没问题!

`%P+%` <- function(p1, p2) {p <- ggplot2:::`+.gg`(p1, p2); print(p); invisible(p)}

和通话

ggplot(mtcars, aes(mpg, cyl)) %P+% 
  geom_point() %P+%
  scale_x_sqrt() %P+%
  facet_wrap(~gear)

会让你连续三个地块。唯一的限制是,由于优先级问题,您必须小心混合常规 +%P+%