如何正确地将args传递给ggplot stat_function

时间:2015-03-26 14:16:26

标签: r ggplot2

我试图通过多种方式解决这个问题,但我是R的新手,所以我不知道提示和技巧。我正在尝试使用由我的老师提供的二次函数的代码来绘制多项式函数,但是,我仍然遇到"未使用的参数错误"。问题是我给出了三个参数,这是函数所期望的。这是我输入的代码:

> quadratic <- function(x, u.values){
+ X <- cbind(1, x, x^2)
+ return(X %*% u.values)
+ }
> dev.new()
> ggplot() +
+ geom_point(aes(x = t,y = y),data= GData)+
+ stat_function(fun=quadratic(args=c(1.9604816, -0.1201548, -4.9768049)))
Error in quadratic(args = c(1.9604816, -0.1201548, -4.9768049)) : 
  unused argument(s) (args = c(1.9604816, -0.1201548, -4.9768049))

1 个答案:

答案 0 :(得分:8)

正如您所定义的那样,quadratic没有args参数。这是造成错误的原因。

我在猜测 - 但我无法测试,因为您的示例不可重复 - 您应该在args调用中将stat_function更改为某些内容比如args = list(u.values = c(1.9604816, -0.1201548, -4.9768049))

编辑:

为了澄清,args的{​​{1}}参数将您指定的函数(在本例中为stat_function)的其他参数作为quadratic。当您想要将命名参数list传递给args时,您正在做的是将命名参数quadratic传递给args

这是一个可以重现的例子:

stat_function

enter image description here

显然这些数据与您的数据无关,但g <- data.frame(t = seq(0.1, 1, by = 0.1), y = seq(2.1, 3, by = 0.1)) quadratic <- function(x, u.values){ X <- cbind(1, x, x^2) return(X %*% u.values) } ggplot(data = g, aes(x = t, y = y)) + geom_point() + stat_function(fun = quadratic, args = list(u.values = c(1.9604816, -0.1201548, -4.9768049))) 函数已正确应用于数据并绘制结果。