在 R 中绘制具有特定参数的正态分布

Plot a normal distribution in R with specific parameters

我想绘制这样的东西:

plot(dnorm(mean=2),from=-3,to=3)

但它并不像你那样工作:

plot(dnorm,from=-3,to=3)

有什么问题?

curve(dnorm(x, mean = 2), from = -3, to = 3)

curve函数在函数call中查找xname=变量(默认为x),所以在dnorm(x, mean=2),它没有在调用环境中引用 x,它是 curve 的占位符,用于迭代值。

plot(dnorm, ...) 如此工作的原因是因为存在 graphics::plot.function,因为 dnorm 在这种情况下是一个函数。当您尝试 plot(dnorm(mean=2)) 时,dnorm(mean=2) 不再是一个函数,它是一个调用...碰巧失败了,因为它需要提供 x(它的第一个参数)。

顺便说一下,plot.function 调用 curve(...),所以除了作为一个方便的功能之外,没有什么理由在 curve(dnorm(x), ...) 上使用 plot(dnorm, ...) 除了可能有点代码高尔夫。 curve 的最大优点是它允许您控制 dnorm() 函数的任意参数,而 plot.function 则不能。

您从@r2evans 那里得到的回答非常好。您可能还想考虑学习 ggplot,因为在长 运行 中,它可能会让您的生活更轻松。在这种情况下,您可以使用 stat_function,它将沿着 x 变量的网格绘制任意函数的结果。它以列表的形式接受函数的参数。

library(ggplot2)
ggplot(data = data.frame(x=c(-3,3)), aes(x = x)) + 
  stat_function(fun = dnorm, args = list(mean = 2))