我想在以直方图格式绘制的某些数据之上绘制一条正态曲线。我认为这将相对简单。到目前为止,我有:
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
,但是除了“它需要一个字符串”之外,找不到任何有关如何使用它的文档。
答案 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)))