ggplot的stat_ecdf增加了两个额外点

时间:2014-08-18 17:50:09

标签: r ggplot2

ggplot2中,当我尝试使用stat_ecdfgeom_point绘制累积密度函数时,我看到了一个奇怪的行为:我的数字中添加了两个额外的点,一个在一切之前和其他一切事后。如果默认geom_step用于绘图,这种情况有意义,但如果没有geom_point,如果不是完全错误的话,这会非常混乱。有谁知道如何解决这一问题?

以下是一个例子:

qplot(a,data=data.frame(a=1:10),stat="ecdf",geom="point")

产生:

ecdf plot with one point extra point at zero and one at one

注意0和10的加分。

这是我的R会话信息:

> sessionInfo()
R version 3.1.1 (2014-07-10)
Platform: x86_64-apple-darwin13.1.0 (64-bit)
... 
attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base
other attached packages:
[1] scales_0.2.4  ggplot2_1.0.0

1 个答案:

答案 0 :(得分:4)

stat_cdf应用于geom_point()没有多大意义。如果你想要一个CDF情节,你最好用。

library(ggplot2)
df = data.frame(a=1:10)
ggplot(data = df, aes(x=a)) + stat_ecdf() + scale_x_discrete(breaks = 1:11)

enter image description here

stat_ecdf应该是一个阶梯函数。

如果你坚持让你的代码工作并接受黑客攻击,那么你就可以做到这一点。

ggplot(data = df, aes(x=a)) + geom_point(stat = "ecdf", colour = c(rep("red", 11), NA))

enter image description here