2013-04-06 2 views
3

Я новичок в ggplot2, и я пытаюсь понять, как добавить строку к уже существующему сюжету, который я создал. Исходный график, являющийся кумулятивным распределением столбца данных T1 из кадра данных x, содержит около 100 000 элементов. Я успешно построил это с использованием ggplot2 и stat_ecdf() с кодом, который я разместил ниже. Теперь я хочу добавить еще одну строку с помощью набора (х, у) координаты, но когда я пытаюсь это с помощью geom_line() я получаю сообщение об ошибке:Добавить в ggplot с элементом разной длины

Error in data.frame(x = c(0, 7.85398574631245e-07, 3.14159923334398e-06, : 
arguments imply differing number of rows: 1001, 100000 

Вот код, который я пытаюсь использовать:

> set.seed(42) 
> x <- data.frame(T1=rchisq(100000,1)) 
> ps <- seq(0,1,.001) 
> ts <- .5*qchisq(ps,1) #50:50 mixture of chi-square (df=1) and 0 
> p <- ggplot(x,aes(T1)) + stat_ecdf() + geom_line(aes(ts,ps)) 

Это то, что порождает ошибку сверху. Теперь вот код с использованием базовых графики, которые я использовал для использования, но что я сейчас пытаюсь отойти от:

plot(ecdf(x$T1),xlab="T1",ylab="Cum. Prob.",xlim=c(0,4),ylim=c(0,1),main="Empirical vs. Theoretical Distribution of T1") 
lines(ts,ps) 

Я видел некоторые другие сообщения о добавлении строк в целом, но то, что я не видел как добавить строку, когда два исходных вектора не имеют одинаковой длины. (Примечание: я не хочу просто использовать координаты 100 000 (x, y).)

В качестве бонуса есть ли простой способ, аналогичный использованию abline, чтобы добавить линию падения на графике ggplot2?

Любой совет будет очень благодарен.

ответ

0

ggplot занимается data.frames, что вам нужно сделать ts и psdata.frame укажите в вашем вызове этот дополнительный data.frame к geom_line:

set.seed(42) 
x <- data.frame(T1=rchisq(100000,1)) 
ps <- seq(0,1,.001) 
ts <- .5*qchisq(ps,1) #50:50 mixture of chi-square (df=1) and 0 
tpdf <- data.frame(ts=ts,ps=ps) 
p <- ggplot(x,aes(T1)) + stat_ecdf() + geom_line(data=tpdf, aes(ts,ps)) 

enter image description here

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