我想绘制一周内18:00 pm到7:00 am(日期为x轴)之间的数据。
我想把我的数据绘制沿着18:00 pm和7:00 am的时间间隔上。我每5分钟收集一次一周的数据,我试图过滤出所需的时间间隔,但我无法得到预期的结果。这是我到目前为止所做的:(我是R的新手)
class(Marzo$date)
Marzo$hms <- format(as.POSIXct(Marzo$date), "%H:%M:%S")
data1 <- Marzo %>% filter(hms >="18:00:00" & hms <="7:00:00") %>% print(n=250)
ggplot() +
geom_line(data= data1, aes(x= date, y= RH3000, colour= "RH3000"),
lwd=1) +
geom_line(data= data1, aes(x= date, y= RH4000, colour= "RH4000"),
lwd=1) +
scale_colour_manual("", breaks=c("RH3000","RH4000"), values=c("blue4","turquoise1")) +
scale_x_datetime(labels= date_format("%m-%d %H:%M"), date_breaks= "12 hours")
当我使用这个过滤器时,这就是我得到的:2023年3月13日23时45分
2023-03-13 23:50:01
2023年3月13日23时55分
2023年3月14日18时00分
2023年3月14日18时05分01秒
一旦它得到了00:00下午,它再次开始与小时18:00下午的第二天,而不是进行,直到得到7:00上午的第二天。对不起,如果我是一个有点误导买我不是英语。任何形式的帮助将派上用场。
此外,它将是伟大的摆脱直线之间显示的非选定的间隔。图形:enter image description here
1条答案
按热度按时间6uxekuva1#
您的代码的问题可能是您将日期和时间分开处理,这可能会在过滤或绘制时导致意外结果。相反,您可以使用as.POSIXct()函数将日期和时间合并到单个datetime变量中,这将允许您更准确地过滤和绘制数据。
下面是你的代码的一个更新版本,它可能会工作:(我不能尝试,因为我没有任何数据...)下次请粘贴一个最小的可复制样本。
在这段代码中,我们首先使用as.POSIXct()将日期列转换为日期时间格式。然后,我们使用filter()选择下午7:00到第二天早上7:00之间的数据。请注意,我们使用|最后,我们使用date变量绘制数据,并按单个组分组,以避免x轴刻度的问题。