2009-12-05 9 views
9

Gibt es eine Möglichkeit, eine mathematische Funktion mit ggplot über die Daten zu legen?Plotten von Funktionen über Datenpunkte in R

## add ggplot2 
library(ggplot2) 

# function 
eq = function(x){x*x} 

# Data      
x = (1:50)  
y = eq(x)                

# Make plot object  
p = qplot( 
x, y, 
xlab = "X-axis", 
ylab = "Y-axis", 
) 

# Plot Equation  
c = curve(eq) 

# Combine data and function 
p + C#? 

In diesem Fall wird meine Daten erzeugt, um die Funktion, aber ich möchte wissen, wie curve() mit ggplot zu verwenden.

Antwort

16

Sie wollen wahrscheinlich stat_function:

library("ggplot2") 
eq <- function(x) {x*x} 
tmp <- data.frame(x=1:50, y=eq(1:50)) 

# Make plot object 
p <- qplot(x, y, data=tmp, xlab="X-axis", ylab="Y-axis") 
c <- stat_function(fun=eq) 
print(p + c) 

und wenn Sie wirklich verwenden curve() wollen, dh die berechneten x- und y-Koordinaten:

qplot(x, y, data=as.data.frame(curve(eq)), geom="line") 
3

Da Ihre Frage Titel „Plotten Funktionen in R ", hier ist wie curve zu verwenden, um eine Funktion zu einem Basis-R-Diagramm hinzuzufügen.

erstellen Daten nach wie vor

eq = function(x){x*x}; x = (1:50); y = eq(x) 

Dann plot von Basis Grafiken verwenden, um die Punkte zu zeichnen, gefolgt von curve mit dem add=TRUE Argumente, um die Kurve zu addieren.

plot(x, y, xlab = "X-axis", ylab = "Y-axis") 
curve(eq, add=TRUE)