2013-12-16 2 views
1

Я пытаюсь построить 4 функции ecdf на одном графике, но, похоже, не может найти правильный синтаксис.Как построить несколько ECDF на одном графике в разных цветах в R

Если у меня есть 4 функции «A, B, C, D», каков будет правильный синтаксис в R, чтобы они были построены на одной диаграмме с разными цветами. Благодаря!

ответ

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

Вот один из способов (для трех из них, работает на четыре точно так же):

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 1/2 года назад я только сказал, что знаю, что я раньше не был, не ответил. И сегодняшний ответ - это все базы R, без Hmisc, так что есть. ;-) –

+1

Поиск по: 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

 Смежные вопросы

  • Нет связанных вопросов^_^