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

wenn ich die Grafik zu zeichnen, mag ich Datum in x-Achse hinzuzufügen, warum meine axis(1, at = time) nicht die aktuellen Daten in x-Achse hinzufügen kann?Set X-Achsenbeschriftungen zu Daten, an denen Zeitreihen Plotten

Antwort

6

Wenn Sie axis(1, at=time) aufrufen, geben Sie R an, die x-Achse mit Beschriftungen an den durch time angegebenen Punkten zu plotten. time ist jedoch ein Vektor von Zeichen, keine Zahlen.

In der Regel rufen Sie axis(1, at=..., labels=...) an, die die tatsächlichen Beschriftungen angibt und wo sie entlang der Achse platziert werden. In Ihrem Fall setzt Ihr Aufruf an plot.ts implizit die X-Achsen-Grenzwerte auf 2010 und 2013.75, so dass Ihr at Parameter diese Grenzen widerspiegeln sollte.

So möchten Sie axis nennen sagen, dass die Etiketten time und die Positionen sind 2010, 2010.25, 2010.50 ..., das heißt, seq(from=2010, to=2013.25, by=0.25). Eine allgemeine Lösung ist diese:

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 
Verwandte Themen