R + ggplot2-绘制直方图上方的法线曲线

时间:2020-06-05 07:11:30

标签: r ggplot2

我想在以直方图格式绘制的某些数据之上绘制一条正态曲线。我认为这将相对简单。到目前为止,我有:

x = rnorm(2000, mean=-5, sd=4)

a_hist = ggplot() + 
  geom_histogram(aes(x), fill='darkred') +
  stat_function(fun=dnorm, args(list(mean=-5, 4)))

这使我得到除正常曲线以外的所有内容。我猜这是因为轴,但是当我尝试弄乱平均值/ SD /计数时,它仍然没有显示。我也认为可能是由于aes映射。但是ggplot不允许我将数据放入基本ggplot调用中,因为它是向量而不是数据帧。试图将其强制转换为数据帧并将其传递给我,这给了我其他错误。我探索了stat_function()参数position,但是除了“它需要一个字符串”之外,找不到任何有关如何使用它的文档。

1 个答案:

答案 0 :(得分:0)

有两种获取这些覆盖物的方法。您可以将直方图缩放为密度,也可以将密度缩放为计数比例。这是两个示例:

将直方图缩放到密度

除了dnorm()参数之外,不需要任何先验知识。

library(ggplot2)

n <- 2000
x = rnorm(n, mean=-5, sd=4)

ggplot() + 
  geom_histogram(aes(x, y = after_stat(density)), fill='darkred') +
  stat_function(fun=dnorm, args= list(mean=-5, sd = 4))

按比例缩放密度

需要知道观测值n并设置已知的binwidth

binwidth <- 1
ggplot() + 
  geom_histogram(aes(x), fill='darkred', binwidth = binwidth) +
  stat_function(fun=dnorm, args= list(mean=-5, sd = 4),
                aes(y = after_stat(y * binwidth * n)))