你可以用 spline()
造一个插值的方法给 ggplot。
myspline = function(formula, data, ...)
{
dat = model.frame(formula, data)
res = splinefun(dat[[2]], dat[[1]])
class(res) = "myspline"
res
}
predict.myspline = function(object, newdata, ...)
{
object(newdata[[1]])
}
library(ggplot2)
set.seed(123)
dat = data.frame(xx = runif(100, -5, 5))
dat$yy = sin(dat$xx)
ggplot(dat, aes(x = xx, y = yy)) +
geom_point() +
geom_smooth(method = myspline, se = FALSE)