2009-12-05 10 views
9

ggplotを使用してデータの上に数学関数をオーバーレイする方法はありますか?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#? 

この場合、私のデータは、関数を使用して生成されますが、私はggplotでcurve()を使用する方法を理解したいと思います。

答えて

16

おそらく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) 

、あなたが本当にcurve()、すなわちを使用したい場合は、計算されたxとy座標:

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

をあなたの質問のタイトルは、関数をプロットする「であるこ​​とを考えますR内では、curveを使用してベースRプロットに関数を追加する方法を次に示します。

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

は次に曲線を追加するために、add=TRUE引数とcurve続く点をプロットするベースグラフィックからplotを使用する前に、データを作成します。

plot(x, y, xlab = "X-axis", ylab = "Y-axis") 
curve(eq, add=TRUE) 
関連する問題