2013-03-16 100 views
1

我的系列包含755个值。 我想通过使用坐标轴和一个序列来定义滴答,在x轴上绘制日期。但问题在于标签的长度与H2S.time不相等,因此该轴未绘制。我如何以时尚的方式在轴上绘制日期? H2S.time系列包含从2011年2月2日至2013年3月5日755天存储为字符串的日期。无法在x轴上拟合日期

#Import H2S Series 
H2S.time<-read.table("H2S-time.txt")[1:755,1] 
H2S.ts<-read.table("H2S.txt")[1:755,1] 
H2S.time <- as.Date(H2S.time, format="%m/%d/%Y") 
plot(H2S.ts,col="blue",xlab="Day",) 
axis(side=1, at=seq(1,755,by=20), labels=strftime(H2S.time, format="%d-%m-%Y"),cex.axis=0.8) 

回答

1

您的标签的子集采取:

plot(H2S.ts,col="blue",xlab="Day",xaxt='n') #no x-axis 
axis(side=1, at=seq(1,755,by=20), labels=strftime(H2S.time, 
    format="%d-%m-%Y")[seq(1,755,by=20)],cex.axis=0.8) 
+0

嗯......这个轴似乎只添加到另一个。有没有办法可以跳过绘制另一个x轴1? – l3win 2013-03-16 05:53:06

+0

@ l3win检查我的更新答案。 – 2013-03-16 06:17:30

1

axis()功能不是通用的,但也有绘制时间相关数据的特殊选择功能 。功能axis.Date()axis.POSIXct()取对象包含日期并产生一个与适当的标签 轴。这里有两个例子改编自相应功能的帮助:

enter image description here

## example with axis.Date 
layout(matrix(c(1,2),nrow=2,byrow=TRUE)) 
random.dates <- as.Date("2001/1/1") + 70*sort(stats::runif(100)) 
plot(random.dates, 1:100, xaxt="n",main='pretty axes dates') 
axis.Date(1, at=seq(as.Date("2001/1/1"), max(random.dates)+6, "weeks")) 
### example with axis.POSIXct 
with(beaver1, { 
    time <- strptime(paste(1990, day, time %/% 100, time %% 100), 
        "%Y %j %H %M") 
    # now label every hour on the time axis 
    plot(time, temp, type="l", xaxt="n",main='pretty axes times') 
    r <- as.POSIXct(round(range(time), "hours")) 
    axis.POSIXct(1, at=seq(r[1], r[2], by="hour"), format="%H:%M") 
})