ggplot2奇怪地绘制了一条线

时间:2014-03-18 18:08:02

标签: r ggplot2

我试图绘制时间序列x_t = A +( - 1)^ t B

要执行此操作,我使用以下代码。问题是,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。但它也需要不同的价值观。我的代码出了什么问题?

提前感谢您提供任何帮助

1 个答案:

答案 0 :(得分:3)

在断言某事是错误的&#34;之前,你应该更加小心。您创建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

请注意行号。