我的系列包含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)
答案 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()
获取包含日期的对象并生成一个轴
适当的标签。这里有两个例子来自相应功能的帮助:
## 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")
})