在R图形中的“曲线”功能中使用用户定义的函数

时间:2016-04-03 05:08:18

标签: r graphics ggplot2 user-defined-functions

我需要生成具有不同总面积的正态分布密度图(总和为1)。使用以下函数,我可以指定lambda - 它给出相对区域:

require(ggplot2)
qplot(x, geom="blank") + stat_function(fun=sdnorm,args=list(mean=8,sd=2,lambda=0.7)) +
  stat_function(fun=sdnorm,args=list(mean=18,sd=4,lambda=0.30))

然后我想用不同的参数绘制函数。使用ggplot2,此代码有效:

paint

enter image description here

但我真的想在基础R图形中做到这一点,我认为我需要使用“曲线”功能。但是,我正在努力让这个工作。

2 个答案:

答案 0 :(得分:1)

您可以在基础R

中执行以下操作
x <- seq(0, 50, 1)
plot(x, sdnorm(x, mean = 8, sd = 2, lambda = 0.7), type = 'l', ylab = 'y')
lines(x, sdnorm(x, mean = 18, sd = 4, lambda = 0.30))

编辑我添加了ylab = 'y'并更新了图片以重新标记了y轴。

enter image description here

这应该让你开始。

答案 1 :(得分:0)

如果你看一下? curve的帮助文件,你会发现第一个参数可以是许多不同的东西:

  

函数的名称,或作为x函数编写的调用或表达式,它将计算为与x相同长度的对象。

这意味着您可以将第一个参数指定为函数名称或表达式,因此您可以这样做:

curve(sdnorm)

获取函数及其默认参数的图。否则,要重新创建你想要的ggplot2表示:

curve(sdnorm(x, mean=8,sd=2,lambda=0.7), from = 0, to = 30)
curve(sdnorm(x, mean=18,sd=4,lambda=0.30), add = TRUE)

结果:

curve