如何使R格子xyplot及时忽略间隙并制作连续的时间序列图?

时间:2014-04-13 21:17:57

标签: r xts lattice

我有一个xts系列,我试图绘制。本系列包含一个月的日内日期,周末数据存在差距。我在R中使用xyplot(点阵)绘制时间序列,我对结果非常满意。

不幸的是,情节保持了周末的差距。我想忽略周末的差距,让我的时间序列连续不断,如果有人指出我正确的方向,我会很感激。

当前命令是:

xyplot(close~MyTime, type='l', col='black',ylab='',xlab='', main='Test')

enter image description here

我尝试过JohnPaul的方法,它“差不多”了。存在时的标签无法正确呈现。最后一个标签只到1月3日,而实际数据一直延续到2月份。使用的命令是:

PlotOrd<-order(Mytime)
xyplot(close~PlotOrd, type='l', col='black',ylab='',xlab='', main='Close',scales=list( x=list( labels=MyTime))  )

enter image description here

1 个答案:

答案 0 :(得分:2)

如果我理解这一点,你想要做的就是周末不会出现在情节中。一种方法是制作另一个向量,它是你想要close绘制的顺序 - 一个不包含周末的向量。假设time中没有包含周末,这应该有效:

PlotOrd<-order(Mytime)

xyplot(close~PlotOrd, type='l', col='black',ylab='',xlab='', main='Test')

这将为您提供正确的绘图,但您的x轴刻度标签将只是来自PlotOrd的数字。如果您希望将它们保留为日期,请为x轴添加scales参数,如下所示:

xyplot(close~PlotOrd, type='l', col='black',ylab='',xlab='', main='Test',
scales=list( x=list( labels=Mytime )) )

修改

控制轴标签的一种方法是使用at参数。这里有点笨拙,我希望我能提出一个更优雅的想法,但这会有效:

xyplot(close~PlotOrd, type='l', col='black',ylab='',xlab='', main='Test',
scales=list( x=list(at=c(50,100,150,200), labels=Mytime[c(50,100,150,200)] )) )

这将在观察点50,100,150和200处设置刻度,并将MyTime的相应值作为标签。缺点是你必须自己写入滴答声。您可以添加一些代码来生成一系列值。假设您每15天需要一个标签。如果你弄清楚对应的测量数量,你可以制作一个相距很远的数字序列(称之为MyTicks)。然后输入at=MyTickslabels=MyTime[MyTicks]。格子只为你选择蜱虫会更好......