2013-04-06 44 views
3

我是ggplot2的新手,我試圖弄清楚如何將一條線添加到已創建的已有圖中。原始圖是來自數據幀x的數據列T1的累積分佈,其具有約100,000個元素。我已經成功地繪製了這個使用ggplot2和stat_ecdf()與我在下面發佈的代碼。現在,我想添加使用一組(X,Y)座標另一條線,但是當我嘗試這個使用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圖上添加放置線?

任何意見將不勝感激。

data.frames

回答

0

ggplot交易,你需​​要做tsps一個data.frame然後指定你的電話本額外data.framegeom_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

相關問題