我知道我可以通过以下方式将密度曲线拟合到ggplot中的直方图中。
df = data.frame(x=rnorm(100))
ggplot(df, aes(x=x, y=..density..)) + geom_histogram() + geom_density()
{{3}}
但是,我希望我的yaxis是频率(计数)而不是密度,并保留适合分布的曲线。我该怎么做?
答案 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)))