In reference to this开发者_开发知识库 question here, I managed to plot an ECDF for my data. However, I was wondering if it is possible to extend the lines to the extreme left/right of the graph much like how base R plots it? Any suggestions?
I want the lines to look more like this (extending to the extreme left/right of the graph and not ending abruptly as above):
Probably, at the moment, there is no way to do automatically. You can set the range of drawing by adding manually limits to data frame.
# sample data frame
df <- data.frame(x = c(rnorm(100, -3), rnorm(100), rnorm(100, 3)), g = gl(3, 100))
df <- ddply(df, .(g), summarize, x = x, y = ecdf(x)(x))
# add x min/max for each levels
df2 <- rbind(df, ddply(df, .(g), function(x) data.frame(x = range(df$x), y = c(0, 1))))
ggplot(df2, aes(x, y, colour = g)) + geom_line()
If you need to ensure that the function is monotonic, you can use something like:
monotonic.y <- y;
n <- length(monotonic.y);
for (i in 1:n) {
monotonic.y[i] <- max(monotonic.y[1:i]);
}
and plot monotonic.y
instead of y
.
精彩评论