我有从12:30开始的时间序列数据,从01:30:00(01:30 AM)开始。
我喜欢2小时的重大休息和1小时的小休息。
我使用ggplot2和scale_x_datetime来设置中断和date_minor_breaks
我默认会遇到这些重大突破:03AM,05AM,07AM,09AM,11AM。
我更喜欢这些重大突破:凌晨2点,凌晨4点,早上6点,早上8点,上午10点
看起来可以手动设置中断向量,但我不确定如何为日期时间数据类型执行此操作。
我还以为我可以通过指定第一个主刻度标记(第一个中断)覆盖默认值,然后"中断"可以填写其余部分。
我更倾向于避免对断点向量进行硬编码,因为这段代码需要可重用(对于具有不同开始时间的数据集)。
#quick sample data set
DF_test <- data.frame(matrix("NA", ncol = 2, nrow = 6))
DF_test$TS <- as.POSIXct(
c("2017/01/01 01:30:00",
"2017/01/01 03:40:00",
"2017/01/01 05:10:00",
"2017/01/01 07:05:00",
"2017/01/01 09:25:00",
"2017/01/01 11:00:00"
),
tz="UTC",origin="1970-01-01",usetz=F)
DF_test$value <- c(50,51,45,50,57,49)
#Create plot
ggplot(DF_test) +
scale_x_datetime(breaks = date_breaks("2 hour"),
date_minor_breaks = "1 hour",
labels = date_format("%I\n%p")) +
geom_line(aes(TS, value))
样本数据图:
如果您有兴趣 - 最终目标:
4小时重大休息时间
答案 0 :(得分:2)
您可以使用seq.POSIXt()
从最小POSIXct
到最大by = "2 hour"
来使用lubridate::ceiling_date
生成x轴标签。然后使用library(ggplot2)
library(scales)
library(lubridate)
ggplot(DF_test) +
scale_x_datetime(breaks = seq.POSIXt( ceiling_date(min(DF_test$TS), unit = "hour"),
ceiling_date(max(DF_test$TS), unit = "hour"), by = "2 hour" ),
labels = date_format("%H:%M %p") ) +
geom_line (aes(TS, value))
将其四舍五入到下一个小时。这是所需的输出吗?
by
关于您的最终目标,只需在"2 hour"
<{1}} "4 hour"
if(hitFlag==true){
System.out.println("we hit em at "+(char)colGuess+rowGuess+" chief!");
} else {
System.out.println("sorry chief we missed em");
}
中替换 if(hitFlag==true){
System.out.println("we hit em at "+(char)colGuess+rowGuess+" chief!");
} else {
System.out.println("sorry chief we missed em at " + (char)colGuess+rowGuess);
}