拟合曲线到直方图ggplot

时间:2015-07-24 22:54:44

标签: r ggplot2

我知道我可以通过以下方式将密度曲线拟合到ggplot中的直方图中。

df = data.frame(x=rnorm(100))
ggplot(df, aes(x=x, y=..density..)) + geom_histogram() + geom_density()

{{3}}

但是,我希望我的yaxis是频率(计数)而不是密度,并保留适合分布的曲线。我该怎么做?

1 个答案:

答案 0 :(得分:3)

根据您的目标,只需使用乘法缩放密度曲线,就可以实现这样的目的:

ggplot(df, aes(x=x)) + geom_histogram() + geom_density(aes(y=..density..*10))

ggplot(df, aes(x=x)) + geom_histogram() + geom_density(aes(y=..count../10))

如果您想以不同方式扩展内容,请选择其他值(而不是10)。

编辑:

由于您要在全局环境中定义缩放因子,因此可以在aes中定义它:

ggplot(df, aes(x=x)) + geom_histogram() + geom_density(aes(n=n, y=..density..*n)) 
# or
ggplot(df, aes(x=x, n=n)) + geom_histogram() + geom_density(aes(y=..density..*n))

或使用get的不太好的方式:

ggplot(df, aes(x=x)) + 
  geom_histogram() + 
  geom_density(aes(y=..density.. * get("n", pos = .GlobalEnv)))