【发布时间】:2015-02-24 01:04:13
【问题描述】:
我想在直方图中添加一条密度线(实际上是正常密度)。
假设我有以下数据。我可以通过ggplot2绘制直方图:
set.seed(123)
df <- data.frame(x = rbeta(10000, shape1 = 2, shape2 = 4))
ggplot(df, aes(x = x)) + geom_histogram(colour = "black", fill = "white",
binwidth = 0.01)
我可以使用以下方法添加密度线:
ggplot(df, aes(x = x)) +
geom_histogram(aes(y = ..density..),colour = "black", fill = "white",
binwidth = 0.01) +
stat_function(fun = dnorm, args = list(mean = mean(df$x), sd = sd(df$x)))
但这不是我真正想要的,我希望这条密度线适合计数数据。
我发现了一个类似的帖子 (HERE) 提供了解决此问题的方法。但在我的情况下它不起作用。我需要一个任意的扩展因子来得到我想要的。这根本无法概括:
ef <- 100 # Expansion factor
ggplot(df, aes(x = x)) +
geom_histogram(colour = "black", fill = "white", binwidth = 0.01) +
stat_function(fun = function(x, mean, sd, n){
n * dnorm(x = x, mean = mean, sd = sd)},
args = list(mean = mean(df$x), sd = sd(df$x), n = ef))
我可以用来概括这一点的任何线索
- 首先到正态分布,
- 然后到任何其他 bin 大小,
- 最后对任何其他发行版都非常有帮助。
【问题讨论】:
-
您的意思是两张图表图像相同吗?您好像上传了两次同一个
-
在
MASS包中使用fitdistr(...)来适应分布。
标签: r ggplot2 histogram density-plot