有一些关于在 ggplot 中绘制累积密度的帖子。我目前正在使用Easier way 中接受的答案来绘制 ggplot 中的累积频率分布?用于绘制我的累积计数。但是这个解决方案涉及预先计算值。
在这里,我正在寻找一个纯 ggplot 解决方案。让我们展示一下我到目前为止所拥有的:
x <- data.frame(A=replicate(200,sample(c("a","b","c"),1)),X=rnorm(200))
ggplot的stat_ecdf
我可以使用 ggplot's stat_ecdf
,但它只绘制累积密度:
ggplot(x,aes(x=X,color=A)) + geom_step(aes(y=..y..),stat="ecdf")
我想做类似以下的事情,但它不起作用:
ggplot(x,aes(x=X,color=A)) + geom_step(aes(y=..y.. * ..count..),stat="ecdf")
cumsum
和stat_bin
我发现了一个关于使用cumsum
and的想法stat_bin
:
ggplot(x,aes(x=X,color=A)) + stat_bin(aes(y=cumsum(..count..)),geom="step")
但是正如你所看到的,下一个颜色不是从 开始y=0
,而是最后一个颜色结束的地方。
我的要求
我想要从最好到最坏的:
理想情况下,一个简单的修复不工作
ggplot(x,aes(x=X,color=A)) + geom_step(aes(y=..y.. * ..count..),stat="ecdf")
stat_ecdf
使用计数的更复杂的方法。- 最后的手段是使用该
cumsum
方法,因为它会给出更差(合并)的结果。