2010-12-21 14 views
11

Me gustaría ajustar mis datos usando spline (y ~ x) pero todos los ejemplos que puedo encontrar utilizan una spline con suavizado, p. Ej. lm (y ~ ns (x), df = _).¿Cómo puedo usar spline() con ggplot?

Quiero usar spline() específicamente porque estoy usando esto para hacer el análisis representado por la trama que estoy haciendo.

¿Hay una manera simple de usar spline() en ggplot?

He considerado el enfoque hacker instalar una línea usando

geom_smooth(aes(x=(spline(y~x)$x, y=spline(y~x)$y)) 

pero preferiría no tener que recurrir a esto.

Gracias!

Respuesta

22

es esto lo que quieres?

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))) 
+0

eso es exactamente lo que estaba buscando; agradable y simple. gracias –

+1

¿Qué sucede si quiero dibujar dos líneas, p. para 'x1, y1' y' x2, y2' en 'd <-data.frame (x1 = 1: n, y1 = rnorm (n), x2 = 1: n + 0.5, y2 = runif (10)) ¿? Estoy teniendo problemas con la línea 'geom_line (aes (x1, y1), data = data.frame (spline (x1, y1)))' –

+0

la respuesta a lo anterior es: 'geom_line (aes (d $ x1, d $ y1), data = data.frame (spline (x1, y1))) ', aunque no estoy seguro de por qué ... –

Cuestiones relacionadas