提问者:小点点

使用SQL UNIX_TIMESTAMP()后,如何在ggplot轴上显示一天中的时间?


我正在处理由类似于以下的查询返回的数据:

SELECT UNIX_TIMESTAMP(timestamp) DIV 300 AS period, COUNT(*) as count from tbl
GROUP BY UNIX_TIMESTAMP(timestamp) DIV 300

它将计数分组为5分钟间隔,然后导入R,如下所示:

> head(mydata)
   period count
1 5391360     2
2 5391361     5
3 5391362     4
4 5391363     3
5 5391364     5
6 5391365     5

现在我想用ggplot来绘制它,其中x轴显示以小时间隔开始的实际时间,01:00、02:00、03:00等

有没有一种简单的方法可以做到这一点,而不用手工创建一个时间向量?

如果有用,数据的标题为:

structure(list(period = 5391360:5391365, count = c(2L, 5L, 4L, 
3L, 5L, 5L)), row.names = c(NA, 6L), class = "data.frame")

共1个答案

匿名用户

在这个解决方案中,我首先创建一个datetime值的向量。向量DF1$perio乘以300,并强制为类“POSIXCT。然后保留小时和分钟。

period <- as.POSIXct(df1$period*300, origin = "1970-01-01")
period <- format(period, "%H:%M")

library(ggplot2)

ggplot(data = data.frame(period, count = df1$count),
       mapping = aes(period, count)) +
  geom_col(position = position_dodge())