设置时间序列图的x轴标签为日期

8
x=read.table(text="    Qtr1 Qtr2 Qtr3 Qtr4  
2010  1.8  8.0  6.0  3.0  
2011  2.0 11.0  7.0  3.5  
2012  2.5 14.0  8.0  4.2  
2013  3.0 15.2  9.5  5.0",
    sep="",header=TRUE)  
y<-ts(as.vector(as.matrix(x)),frequency=4,start=c(2010,1))  
plot.ts(y)  
time<-seq(as.Date("2010/1/1"),length.out=20,by="3 months")  
axis(1, at = time) 

当我绘制图形时,我想在x轴上添加日期,为什么我的axis(1, at = time)不能将日期数据添加到x轴上呢?

1个回答

9
当你调用axis(1, at=time)时,你告诉R使用time中给定的点作为x轴上的标签。然而,time是一个由字符组成的向量,而不是数字。
通常情况下,你需要调用axis(1, at=..., labels=...)来指定实际的标签以及它们在轴上的位置。在你的情况下,对plot.ts的调用隐含地设置了x轴的限制为20102013.75,因此你的at参数应该反映这些限制。
所以你需要调用axis来表示标签是time,位置是2010、2010.25、2010.50...,即seq(from=2010, to=2013.25, by=0.25)。一个通用的解决方案如下:
plot.ts(y,axes=F) # don't plot the axes yet
axis(2) # plot the y axis
axis(1, labels=time, at=seq(from=2010, by=0.25, length.out=length(time)) )
box() # and the box around the plot

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接