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轴上添加日期数据?
答案 0 :(得分:6)
当你致电axis(1, at=time)
时,你告诉R在time
给出的点上用标签绘制x轴。但是,time
是字符的向量,而不是数字。
通常,您调用axis(1, at=..., labels=...)
表示实际标签以及沿轴放置它们的位置。在您的情况下,您对plot.ts
的调用会隐式将x轴限制设置为2010
和2013.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