如何在ggplot2中使用求和绘制函数?

时间:2015-11-12 05:25:59

标签: r function ggplot2

我们说我有一个向量x = 1:5。假设我想绘制公式

enter image description here

此示例中的enter image description here请注意,k采用[0,5]中的所有值,而不仅仅是整数。

我将如何在ggplot2中执行此操作?

这是我的尝试:

library(ggplot2)
y <- c(1, 2, 3, 4, 5)
f <- function(k, vector){
sum((vector-k)^2/5)
}
ggplot(data=data.frame(x=c(0, 5)), aes(x)) +
stat_function(fun=f, geom='line', args(list(vector=y)))

Error in (function (k, vector)  : 
  argument "vector" is missing, with no default
Error in exists(name, envir = env, mode = mode) : 
  argument "env" is missing, with no default
如果我显得无知,我道歉;我是ggplot2的新手。

1 个答案:

答案 0 :(得分:3)

两件事。首先,您的函数需要针对要绘制的变量进行适当的矢量化。 sum会崩溃结果。最简单的解决方法是使用

f <- Vectorize(function(k, vector){
    sum((vector-k)^2/5)
}, "k")

其次,args=是一个参数,而不是调用g stat_function时的函数。使用

ggplot(data=data.frame(x=c(0, 5)), aes(x)) +
    stat_function(fun=f, geom='line', args=list(vector=y))

这会给你

enter image description here