我想为ggplot2
绘图创建参数化一系列函数以减少冗余。下面我有没有参数化功能的样子(和工作),我尝试这样做。
我正在尝试捕获并将参数值传递给函数geom_vline()
中的geom_text()
和markvline()
,但我希望将markvline()
与{qplot()
内联1}}函数并返回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)
答案 0 :(得分:1)
我能做的最好的事情是:
markvline <- function(e) {
list(geom_vline(xintercept=e, color="red", size=1),
geom_text(x=e, y=4, label=as.character(e), hjust=0))}
qplot(Sepal.Length, Sepal.Width, data=iris) +
markvline(5) + markvline(6)