使用不同长度的元素添加到ggplot

时间:2013-04-06 20:47:12

标签: r ggplot2

我是ggplot2的新手,我正在试图弄清楚如何在我创建的现有情节中添加一条线。原始图是数据框T1中数据列x的累积分布,其中包含大约100,000个元素。我已经使用ggplot2和stat_ecdf()成功地使用我在下面发布的代码绘制了这个。现在我想使用一组(x,y)坐标添加另一行,但是当我使用geom_line()尝试此操作时,我收到错误消息:

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图表上添加下拉线?

非常感谢任何建议。

1 个答案:

答案 0 :(得分:0)

ggplotdata.frames交易,您需要tsps data.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