2010-12-21 6 views
11

Ich möchte meine Daten mit Spline (y ~ x) anpassen, aber alle Beispiele, die ich finden kann, verwenden einen Spline mit Glättung, z. lm (y ~ ns (x), df = _).Wie kann ich Spline() mit ggplot verwenden?

Ich möchte spline() speziell verwenden, weil ich dies verwende, um die Analyse zu machen, die durch die Handlung dargestellt wird, die ich mache.

Gibt es eine einfache Möglichkeit, Spline() in ggplot zu verwenden?

Ich habe den hackish Ansatz zum Anbringen einer Linie

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

mit in Betracht gezogen, aber ich würde es vorziehen, nicht darauf zurückgreifen zu müssen.

Danke!

Antwort

22

ist das was du willst?

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

das ist genau das, was ich gesucht habe; nett und einfach. Danke, –

+1

was, wenn ich zwei Zeilen, z. für 'x1, y1' und 'x2, y2' in' d <-data.frame (x1 = 1: n, y1 = rnorm (n), x2 = 1: n + 0,5, y2 = runif (10)) '? Ich habe Probleme mit der Linie 'geom_line (aes (x1, y1), Daten = data.frame (Spline (x1, y1)))' –

+0

Die Antwort auf das Obige ist: 'geom_line (aes (d $ x1, d $ y1), data = data.frame (spline (x1, y1))) ', obwohl ich mir nicht sicher bin, warum ... –