在R中的数据点之上绘制函数

时间:2009-12-05 22:38:23

标签: r function statistics plot ggplot2

有没有办法使用ggplot将数学函数叠加在数据之上?

## 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 #?

在这种情况下,我的数据是使用该函数生成的,但我想了解如何将curve()与ggplot一起使用。

2 个答案:

答案 0 :(得分: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")

答案 1 :(得分:3)

鉴于你的问题标题是“在R中绘制函数”,这里是如何使用curve将函数添加到基础R图。

像以前一样创建数据

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

然后使用基础图形中的plot绘制curve后跟add=TRUE参数的点,以添加曲线。

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