带有时间戳的数据,格式为“dd.mm.yyy HH:MM:SS”并绘图

时间:2017-06-12 12:10:24

标签: r timestamp axis-labels

我的数据是一列格式为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

我考虑过将字符串拆分为日期和时间,并在绘图之前将时间转换为秒,但我愿意听到任何替代路径来执行此操作,因为我可能会遇到自动分配轴标签的问题。

1 个答案:

答案 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")))