我的数据是一列格式为dd.mm.yyyy HH:MM:SS
的时间戳。
这就是数据的样子:
> data$TimeStamp
[1] "14.3.2017 10:00:00" "14.3.2017 10:00:01" "14.3.2017 10:00:02" "14.3.2017 10:00:03" "14.3.2017 10:00:04" "14.3.2017 10:00:05"
我的目标是制作时间戳为x-axis
的地块,时间戳HH:MM:SS
为标签,但时间跨度可能超过一天。
因此,例如,我的x-axis
标签在每个刻度处看起来都是这样的,间隔为一小时:
22:00:00 23:00:00 00:00:00 01:00:00 02:00:00
我考虑过将字符串拆分为日期和时间,并在绘图之前将时间转换为秒,但我愿意听到任何替代路径来执行此操作,因为我可能会遇到自动分配轴标签的问题。
答案 0 :(得分:1)
鉴于
df <- data.frame(
x=Sys.time()+runif(100, 1, 60*60*24*2),
y=runif(100))
df$x <- as.character(df$x)
str(df)
# 'data.frame': 100 obs. of 2 variables:
# $ x: chr "2017-06-13 18:33:35" "2017-06-14 11:51:49" "2017-06-12 21:51:10" ...
# $ y: num 0.634 0.738 0.334 0.885 0.461 ...
你可以定义一种标签功能
f <- function(x) as.POSIXct(levels(cut(x, breaks = "2 hours")))
然后再做
df$x <- as.POSIXct(df$x)
plot(y~x, df, xaxt="n")
with(df, axis(1, at=f(x), labels=format(f(x), "%H:%M:%S")))