2013-12-16 3 views
7
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) 

когда я рисовать график, я хочу, чтобы добавить дату в оси х, почему мой axis(1, at = time) не может добавить данные о дате в оси х?Набора х-метка оси до даты, когда черчения временных рядов

ответ

6

Когда вы звоните axis(1, at=time), вы говорите R, чтобы построить ось x с метками в точках, заданных time. Однако 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 
Смежные вопросы