我对ggplot中geom_density
的以下变体的含义感到困惑:
有人可以解释这四个电话之间的区别:
geom_density(aes_string(x=myvar))
geom_density(aes_string(x=myvar, y=..density..))
geom_density(aes_string(x=myvar, y=..scaled..))
geom_density(aes_string(x=myvar, y=..count../sum(..count..)))
我的理解是:
geom_density
将产生密度,其曲线下面积总和为1 geom_density
与..density..
基本相同......?..count../sum(..count..)
会将峰值高度标准化为更像标准化的直方图,确保所有高度总和为1 ..count..
本身没有分母只会将每个bin乘以其中的项目数..scaled..
参数将使密度的最大值为1。我发现..scaled..
非常违反直觉,如果我对它的解释是正确的,我从未见过它,所以我想忽略它。我主要是在寻找澄清geom_density
和一种归一化密度图之间的差异,我假设它需要...count../...
参数。感谢。
(相关:Error with ggplot2 mapping variable to y and using stat="bin")
答案 0 :(得分:10)
stat_density
的默认美学为..density..
,因此默认使用geom_density
的{{1}}调用默认情况下会stat_density
。
您可以通过查看source code
来查看各列的计算方式 y = ..density..
定义为
..scaled..
如果您愿意,请随意忽略它。
结果按此计算
densdf$scaled <- densdf$y / max(densdf$y, na.rm = TRUE)
因此,如果您想比较res <- within(results, {
count[is.na(count)] <- 0
density <- count / width / sum(abs(count), na.rm=TRUE)
ncount <- count / max(abs(count), na.rm=TRUE)
ndensity <- density / max(abs(density), na.rm=TRUE)
})
的结果(使用默认的geom_histogram
),那么您可以设置stat = 'bin'
并为您计算y = ..density..
(会计)对于箱子的宽度)
如果您想将count / sum(count)
与geom_density(aes(y=..scaled..))
进行比较,那么您可以使用stat_bin
您也可以在两者中使用geom_histogram(aes(y = ..ndensity..))
来获得相同的比例,但是您需要调整..count..
中的adjust
参数以获得相应的详细近似值曲线。