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)
when i draw the graph ,i want to add date in x axis,why my axis(1, at = time)
can't add the date data in x axis?
When you call axis(1, at=time)
you're telling R to plot the x axis with labels at points given by time
. However, time
is a vector of characters, not numbers.
In general, you call axis(1, at=..., labels=...)
indicating the actual labels and where to place them along the axis. In your case, your call to plot.ts
implicitly sets the x-axis limits to 2010
and 2013.75
, so your at
parameter should reflect those limits.
So you want to call axis
saying that the labels are time
and the positions are 2010, 2010.25, 2010.50 ...
, that is, seq(from=2010, to=2013.25, by=0.25)
. A general solution is this one:
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With