2015-11-12 3 views
1

Предположим, у меня есть вектор x = 1:5. Предположим, что я хотел бы сюжет формулуКак построить функцию с суммированием в ggplot2?

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.

ответ

3

Две вещи. Во-первых, ваша функция должна быть правильно векторизована для переменной, которую вы хотите построить. sum приведет к краху результата. Самый простой способ исправить это с

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

Во-вторых, args= является параметром, а не функция, когда callingg 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

Смежные вопросы