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

Con*_*bie 0 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))
Run Code Online (Sandbox Code Playgroud)

Aja*_*jar 8

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

我猜 - 但我无法测试,因为你的例子是不可重复的 - 你应该改变args你的stat_function呼叫args = list(u.values = c(1.9604816, -0.1201548, -4.9768049)).

编辑:

为了澄清,args参数stat_function将您指定的函数的附加参数(quadratic在本例中)作为a list.你在做什么是传递一个命名参数argsquadratic,当你想被路过的命名参数argsstat_function.

这是一个可重复的示例:

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)))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

显然,这些数据与您的数据无关,但该quadratic功能正确应用于数据并绘制结果.