1

我的系列包括 755 个值。我试图通过使用轴和序列来定义刻度来在 x 轴上绘制日期。但问题是标签的长度不等于 H2S.time,所以没有绘制轴。如何以时尚的方式在轴上绘制日期?系列 H2S.time 包括以字符串形式存储的从 2/10/2011 到 3/5/2013 的 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)
4

2 回答 2

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)
于 2013-03-16T05:10:11.153 回答
1

axis()函数不是通用的,但有用于绘制时间相关数据的特殊替代函数。函数axis.Date()axis.POSIXct()获取包含日期的对象并生成带有适当标签的轴。这里有两个例子是在相应函数的帮助下改编的:

在此处输入图像描述

## 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")
})
于 2013-03-16T09:09:02.847 回答