【发布时间】:2016-10-26 19:30:12
【问题描述】:
我想为ggplot2 绘图创建参数化一系列函数以减少冗余。下面我有没有参数化函数的外观(和工作),以及我尝试这样做。
我试图在函数markvline() 中捕获参数值并将其传递给geom_vline() 和geom_text(),但我想调用markvline() 与qplot() 函数内联并返回geom_vline() + geom_text()作为参数化,以便它们可以被评估并执行与第一部分中所做的相同的操作。
我认为我需要更好地理解报价/评估/替代,但我现在还没有。对于我将如何构造 markvline() 等效于 geom_vline() + geom_text() 调用并填写参数的任何帮助,我们将不胜感激。
library(ggplot2)
## This works
## Making labeled vertical lines at 5 and 6
qplot(Sepal.Length, Sepal.Width, data=iris) +
geom_vline(xintercept=5, color="red", size=1) +
geom_text(x=5, y=4, label="5", hjust=0) +
geom_vline(xintercept=6, color="red", size=1) +
geom_text(x=6, y=4, label="6", hjust=0)
## I would like to parameterize these two statements
markvline <- function(e) {
geom_vline(xintercept=e, color="red", size=1) +
geom_text(x=e, y=4, label=as.character(e), hjust=0)}
## ... but this does not work
qplot(Sepal.Length, Sepal.Width, data=iris) +
markvline(5) +
markvline(6)
【问题讨论】: