重新排序x轴时间序列数据

时间:2016-07-21 23:37:03

标签: r plot

我有以下数据:

month   eD_data eD_model
1   10.6    10.57456047
1   10.6    10.56613913
1   10.6    10.55792205
1   10.6    10.54991164
1   10.6    10.54211029
1   10.6    10.53452031
1   10.6    10.52714394
1   10.6    10.51998337
1   10.6    10.51304073
1   10.6    10.50631807
2   10.4    10.41738606
2   10.4    10.41613442
2   10.4    10.41513148
2   10.4    10.41437754
2   10.4    10.41387281
2   10.4    10.41361745
2   10.4    10.41361153
2   10.4    10.41385505
2   10.4    10.41434794
2   10.4    10.45139153
2   10.4    10.45580457
3   10.2    10.47581204
3   10.2    10.48139532
3   10.2    10.48720795
3   10.2    10.49324822
3   10.2    10.49951433
3   10.2    10.50600444
3   10.2    10.51271661
3   10.2    10.51964885
3   10.2    10.52679912
3   10.2    10.53416529
3   10.2    10.63854333
3   10.2    10.64849527

其他月份的数据仍有12个。但这里是捷径。我想要的是制作一个情节,但x轴,即月份,从7月开始(7) 这是我的代码:

a<-factor(mydat$month, levels=c("7","8","9","10","11","12","1","2","3","4","5","6")
plot(eD_data~a, data=mydat) 
lines(eD_model~a, data=mydat)
Here what I got 

enter image description here

有没有办法让这条线也从7月开始并且连续? 谢谢!

1 个答案:

答案 0 :(得分:2)

需要根据x轴值的排序对数据框进行排序。否则,当具有较高x值的数据帧行出现在具有较低x值的数据帧行之后,lines将不得不回溯。

# Fake data
set.seed(4865)
dat = data.frame(month=1:12, values=rnorm(12))

将月份的订单设置为7月开始,并且#34;环绕&#34;到六月:

dat$month=factor(dat$month, levels=c(7:12,1:6))

以原始顺序绘制行:我们已将因子顺序设置为在7月开始,以便我们在x轴上得到的结果。但是,数据框的行以1月开头。 lines只是按照数据在数据框中出现的顺序从一点到另一点放置一条线,因此该行从一月开始,并且必须从六月到七月回溯:

plot(values ~ month, data=dat)
lines(values ~ month, data=dat)

enter image description here

month对行进行排序:现在,数据框的行显示的顺序与因子month的顺序相同,一切顺利:

dat = dat[order(dat$month), ]

plot(values ~ month, data=dat)
lines(values ~ month, data=dat)

enter image description here