我感到困惑的下列变量的含义geom_density
在ggplot:
有人可以请解释这四个调用之间的区别:
-
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..
本身没有分母只是在它的项目#乘以每个区间 - 所述
..scaled..
参数将使它这样的密度的最大值为1。
我觉得..scaled..
非常违反直觉的,没见过它用,如果我对它的解释是正确的,所以我想忽略。 我主要是寻找一个澄清之间的差异geom_density
和一种标准化的密度图,我是这样假设需要...count../...
的说法。 谢谢。
(相关: 错误与GGPLOT2映射变量y和使用STAT =“bin”的 )
为默认的审美stat_density
是..density..
,所以通话geom_density
它使用stat_density
默认情况下,将绘制y = ..density..
默认。
你可以看到不同的列是如何通过查看计算值的源代码
..scaled..
被定义为
densdf$scaled <- densdf$y / max(densdf$y, na.rm = TRUE)
随意如果你想忽略它。
综观为stat_bin源代码
结果被计算为这样的
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
参数stat_density
获得曲线的适当的详细逼近。