2012-11-28 24 views
3

我希望能够做的几个不连续的时间序列线图中的R相同的屏幕上,和我有麻烦的所有数据出现一次:在R中的同一图上绘制不连续的xts时间序列?

require(xts) 
require(xtsExtra) 
df1=data.frame(a=1:30,b=3*1:30) 
df1$b[2*1:15]=NA 
df1A_xts=xts(df1,ISOdate(1900+1:30,1,1)) 
df1B_xts=xts(df1,ISOdate(1900+2*1:30,2,1)) 
df1_xts_merge=merge.xts(df1A_xts,df1B_xts) 

当然,当我情节作为一个点图,一切都还好吧显示出来:

plot.xts(df1_xts_merge,screens=1,type="p",auto.legend=TRUE) 

但是当我尝试绘制一个或多个系列的线条,不连续性造成麻烦,比如:

plot.xts(df1_xts_merge,screens=1,auto.legend=TRUE) 

如何将这些系列中的每一个绘制为同一组轴上的连续线?

+0

不知道,但看起来它与'NA'有关。这工作:'plot(na.omit(df1A_xts [,2]))',但这不'plot(df1A_xts [,2])' – GSee

+0

我同意这些问题。我会开放的解决方案,以某种方式将na.omit()数据集合并在一个图上。我还没有想出如何让这个工作。 – user1521655

+0

好吧,这是一个有点不令人满意的解决方案,但它的工作原理如下: 'plot(index(na.omit(df1A_xts)),na.omit(df1A_xts)$ a,type =“l”)' 'lines(index( na.omit(df1A_xts)),na.omit(df1A_xts)$ b,type =“l”)' 'lines(index(na.omit(df1B_xts)),na.omit(df1B_xts)$ b,type =“ (索引(na.omit(df1B_xts)),na.omit(df1B_xts)$ a,type =“l”)' – user1521655

回答

3

XTS和动物园的行为与默认的绘图方法一致:

matplot(df1_xts_merge,type="l") 

default plotting via matplot

你似乎想通过这些点在你的XTS插对象线条的曲线图,在这种情况下na.approxna.spline会有所帮助:

plot(na.approx(df1_xts_merge),screens=1,auto.legend=TRUE) 

xtsExtra::plot.xts with na.approx