Easier if you get away from qplot ():
library(plyr) library(ggplot2) df <- data.frame( grp = as.factor( rep( c("A","B"), each=40 ) ) , val = c( sample(c(2:4,6:8,12),40,replace=TRUE), sample(1:4,40,replace=TRUE) ) ) df <- arrange(df,grp,val) dfecdf <- ddply(df, .(grp), transform, ecdf=ecdf(val)(val) ) p <- ggplot( dfecdf, aes(val, ecdf, colour = grp) ) p + geom_step()
You can also easily add facet_wrap for multiple groups and xlab / ylab for labels.

df <- data.frame( grp = as.factor( rep( c("A","B"), each=120 ) ) , grp2 = as.factor( rep( c("cat","dog","elephant"), 40 ) ) , val = c( sample(c(2:4,6:8,12),120,replace=TRUE), sample(1:4,120,replace=TRUE) ) ) df <- arrange(df,grp,grp2,val) dfecdf <- ddply(df, .(grp,grp2), transform, ecdf=ecdf(val)(val) ) p <- ggplot( dfecdf, aes(val, ecdf, colour = grp) ) p + geom_step() + facet_wrap( ~grp2 )
