2013-12-16 176 views

回答

5

封裝latticeExtra提供功能ecdfplot

library(lattice) 
library(latticeExtra) 

set.seed(42) 
vals <- data.frame(r1=rnorm(100)*0.5, 
        r2=rnorm(100), 
        r3=rnorm(100)*2) 

ecdfplot(~ r1 + r2 + r3, data=vals, auto.key=list(space='right') 

ecdfplot with legend

5

這裏有一種方法(對於他們三個人,工作4以同樣的方式):

set.seed(42) 
ecdf1 <- ecdf(rnorm(100)*0.5) 
ecdf2 <- ecdf(rnorm(100)*1.0) 
ecdf3 <- ecdf(rnorm(100)*2.0) 
plot(ecdf3, verticals=TRUE, do.points=FALSE) 
plot(ecdf2, verticals=TRUE, do.points=FALSE, add=TRUE, col='brown') 
plot(ecdf1, verticals=TRUE, do.points=FALSE, add=TRUE, col='orange') 

注意,我用的是第三個擁有範圍最廣的事實,並用它來初始化帆布。否則你需要ylim=c(...)

enter image description here

+4

所以,如果你的內存是正確的2.5年前,那麼這就是你的回答同樣的問題第三次:http://stackoverflow.com/questions/6344081/r-plotting-one -ecdf-on-top-of-another-in-different-colors?rq = 1 –

+0

== :-)你剛剛度過了我的一天。我可能需要一個關於在這裏搜索的教程,因爲我尋找一箇舊的答案,但沒有發現它立馬。請注意,2年半前,我只說過我知道我以前做過,沒有回答。今天的答案是所有基地R,沒有Hmisc,所以那裏。 ;-) –

+1

Search on:user:143305 ecdf ....你可以從早些時候找到其他人,儘管我正在考慮使用的是'Hmisc :: Ecdf'。 (有時再簡單一點就行了。) –

2

下面是使用ggplot2性的方法(使用ECDF對象從[德克的答案])(https://stackoverflow.com/a/20601807/1385941

library(ggplot2) 
# create a data set containing the range you wish to use 
d <- data.frame(x = c(-6,6)) 
# create a list of calls to `stat_function` with the colours you wish to use 

ll <- Map(f = stat_function, colour = c('red', 'green', 'blue'), 
      fun = list(ecdf1, ecdf2, ecdf3), geom = 'step') 


ggplot(data = d, aes(x = x)) + ll 

enter image description here

相關問題