在同一表达式中绘制和处理 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+%
。
我想构建我的 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+%
。