Mysql 在使用SQL UNIX_TIMESTAMP()之后,如何在ggplot轴上显示一天中的时间?
我正在处理类似以下查询返回的数据:Mysql 在使用SQL UNIX_TIMESTAMP()之后,如何在ggplot轴上显示一天中的时间?,mysql,r,ggplot2,Mysql,R,Ggplot2,我正在处理类似以下查询返回的数据: SELECT UNIX_TIMESTAMP(timestamp) DIV 300 AS period, COUNT(*) as count from tbl GROUP BY UNIX_TIMESTAMP(timestamp) DIV 300 将计数分组为5分钟间隔,然后导入R,如下所示: set.seed(1) mydata <- data.frame(period = seq(5391360, 5391647), count = rpois(288
SELECT UNIX_TIMESTAMP(timestamp) DIV 300 AS period, COUNT(*) as count from tbl
GROUP BY UNIX_TIMESTAMP(timestamp) DIV 300
将计数分组为5分钟间隔,然后导入R,如下所示:
set.seed(1)
mydata <- data.frame(period = seq(5391360, 5391647), count = rpois(288, 4))
head(mydata)
## period count
## 1 5391360 3
## 2 5391361 3
## 3 5391362 4
## 4 5391363 7
## 5 5391364 2
## 6 5391365 7
这就产生了:
但是,如上所述,我希望x轴具有小时标签:01:00、02:00等在这个解决方案中,首先我创建一个日期时间值向量。向量
df1$period
乘以300并强制为class“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())
谢谢(+1)。但是我需要每隔1小时使用x轴标签(因为我有24小时的数据),我已经用更真实的数据集更新了问题。@JoeKing答案更新,现在看看是否符合您的要求。太好了。谢谢!
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())
set.seed(1)
mydata <- data.frame(period = seq(5391360, 5391647), count = rpois(288, 4))
mydata$hour <- as.POSIXct(mydata$period*300, origin = "1970-01-01")
mydata$hour <- format(mydata$hour, "%H")
agg <- aggregate(count ~ hour, mydata, sum)
library(ggplot2)
ggplot(data = agg, aes(hour, count)) +
geom_col(position = position_dodge())