无法在x轴上显示日期

时间:2013-03-16 03:35:17

标签: r plot

我的系列包含755个值。 我试图通过使用轴和序列来定义刻度来在x轴上绘制日期。但问题是标签的长度与H2S.time不相等,因此不绘制轴。如何以时尚的方式在轴上绘制日期? H2S.time系列包括从2011年2月2日至2013年3月5日存储为字符串的755个日期。

#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)

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分: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")
})