我正在处理由类似于以下的查询返回的数据:
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")
在这个解决方案中,我首先创建一个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())