2010-12-21 5 views
11

Je voudrais ajuster mes données en utilisant spline (y ~ x) mais tous les exemples que je peux trouver utilisent une spline avec lissage, par ex. lm (y ~ ns (x), df = _).Comment utiliser spline() avec ggplot?

Je veux utiliser spline() spécifiquement parce que je l'utilise pour faire l'analyse représentée par le tracé que je fais.

Existe-t-il un moyen simple d'utiliser spline() dans ggplot?

J'ai examiné l'approche hackish de mise en place d'une ligne à l'aide

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

mais je préférerais ne pas avoir à recourir à ce sujet.

Merci!

Répondre

22

c'est ce que tu veux?

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

c'est exactement ce que je cherchais; gentil et simple. merci –

+1

si je veux dessiner deux lignes, par ex. pour les 'x1, y1' et' x2, y2' dans 'd <-data.frame (x1 = 1: n, y1 = rnorm (n), x2 = 1: n + 0.5, y2 = runif (10)) '? J'ai des problèmes avec la ligne 'geom_line (aes (x1, y1), données = data.frame (spline (x1, y1)))' –

+0

la réponse à ce qui précède est: 'geom_line (aes (d $ x1, d $ y1), data = data.frame (spline (x1, y1))) ', même si je ne suis pas sûr de savoir pourquoi ... –