How can I use spline() with ggplot?
I would like to fit my data using spline(y~x) but all开发者_开发百科 of the examples that I can find use a spline with smoothing, e.g. lm(y~ns(x), df=_).
I want to use spline()
specifically because I am using this to do the analysis represented by the plot that I am making.
Is there a simple way to use spline() in ggplot?
I have considered the hackish approach of fitting a line using
geom_smooth(aes(x=(spline(y~x)$x, y=spline(y~x)$y))
but I would prefer not to have to resort to this.
Thanks!
is this what you want?
n <- 10
d <- data.frame(x = 1:n, y = rnorm(n))
ggplot(d,aes(x,y)) + geom_point() +
geom_line(data=data.frame(spline(d, n=n*10)))
Alternatively, with ggformula
https://rdrr.io/cran/ggformula/man/geom_spline.html, you can call ggformula::stat_spline()
directly within ggplot()
.
library(ggplot2)
library(ggformula)
n<-1000
d <- data.frame(x = 1:n, y = rnorm(n))
ggplot(d,aes(x,y))+
# geom_point()+
stat_spline()
Note: OP asked specifically about using spline()
. stat_spline() {ggformula}
calls smooth.spline() {stats}
, which might not be exactly the same implementation as spline() {stats}
but think it may still be a useful answer here for others.
精彩评论