2014-03-18 80 views
0

我试图绘制时间序列X_T = A +(-1)^ T BGGPLOT2被绘制的线奇怪

为此,我使用下面的代码。问题是,ggplot是错误的。

require (ggplot2) 
set.seed(42) 
N<-2 
A<-sample(1:20,N) 
B<-rnorm(N) 
X<-c(A+B,A-B) 
dat<-sapply(1:N,function(n) X[rep(c(n,N+n),20)],simplify=FALSE) 
dat<-data.frame(t=rep(1:20,N),w=rep(A,each=20),val=do.call(c,dat)) 

ggplot(data=dat,aes(x=t, y=val, color=factor(w)))+ 
    geom_line()+facet_grid(w~.,scale = "free") 

enter image description here

看着DAT一切的头向右看:

> head(dat) 
    t w  val 
1 1 12 10.5533 
2 2 12 13.4467 
3 3 12 10.5533 
4 4 12 13.4467 
5 5 12 10.5533 
6 6 12 13.4467 

所以较低(蓝色)线应该只值10.5533和13.4467。但它也有不同的价值。我的代码有什么问题?

预先感谢任何帮助

+3

我不明白你的例子。此外,你的例子产生的数据重复每个点的t值。 – joran

回答

3

你真的应该是断言,什么是“错误的”前多加小心。你现在的样子创造dat行不被dat$t有序,所以head(...)不显示多余的值:

head(dat[order(dat$w,dat$t),],10) 
# t w  val 
# 21 1 18 18.43530 
# 61 1 18 18.36313 
# 22 2 18 19.56470 
# 62 2 18 17.63687 
# 23 3 18 18.43530 
# 63 3 18 18.36313 
# 24 4 18 19.56470 
# 64 4 18 17.63687 
# 25 5 18 18.43530 
# 65 5 18 18.36313 

注意行号。