【发布时间】:2019-09-26 06:24:06
【问题描述】:
我有一个时间序列(每小时)数据,我想打印该数据的选定时间段。假设我想打印从 2019 年 1 月 1 日 00:00 到 2019 年 1 月 8 日 00:00 的一周数据。我希望刻度线从 2019 年 1 月 1 日的 00:00 开始。但由于我不知道的原因,ggplot 从 03:00 开始。我错过了什么吗?
这是一个复制问题的示例代码:
library(ggplot2)
library(scales)
Sys.setenv( TZ = "GMT" )
datetime <- seq(from = as.POSIXct("2019-01-01", tz = "GMT"), length.out = 744, by = "hours")
random<- rnorm(744,100,20)
df <- data.frame(datetime,random)
time.start=as.POSIXct("2019-01-01 00:00",format="%Y-%m-%d %H:%M")
time.end=as.POSIXct("2019-01-08 00:00",format="%Y-%m-%d %H:%M")
png(filename = "test_ggplot.png", width = 800, height = 600, units = "px", pointsize = 24 )
plot.random = ggplot() +
geom_line(data=df, aes(x=datetime, y=random)) +
scale_x_datetime(limits = c(time.start,time.end),
breaks = date_breaks("12 hours"),
labels = date_format("%H:%M\n%d-%b")
)
plot.random
这是图表,显示 x 轴刻度线标签从 03:00 而不是 00:00 开始。
【问题讨论】:
-
我不确定为什么不使用数据框的第一个值作为 x 轴上的第一个值。但我找到了一个简单的解决方案。创建一个包含您想要的中断的序列
seq<- seq(time.start, time.end, by = 60*60*12)并在breaks选项中使用它ggplot() + geom_line(data=df, aes(x=datetime, y=random)) + scale_x_datetime(limits = c(time.start,time.end), breaks = seq, labels = date_format("%H:%M\n%d-%b"))