在 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))
我想绘制这样的东西:
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))