如何自定义线图的24小时开始时间和结束时间? (例如,从7:30开始)

时间:2019-05-25 06:29:38

标签: r

我有一个今天(例如)从今天7:30开始直到第二天7:30的24小时数据,因为我没有将日期链接到折线图中,所以R对从00:00开始的小时进行排序尽管数据从7:30开始,但我是R的初学者,而且我不知道从哪里开始解决该问题,我是否还应该尝试将日期也链接到X轴,还是有更好的解决方案?

我的时间函数也不起作用,它曾经在以15分钟为增量绘制数据时起作用。

library(chron)
d <- read.csv(file="data.csv", header = T)
t <- times(d$Time)
plot(t,d$MCO2, type="l")

根据我拥有的24小时数据创建的图表:

Graph created from the 24 hour data I have

使用相同的代码从15分钟的数据中创建的图形:

Graph created from a 15 minute data using the same code

我希望结果从第二天的7:307:30,但是现在显示的是从0.01的十进制数

这里是数据的链接,以防万一: https://www.dropbox.com/s/wsg437gu00e5t08/Data%20210519.csv?dl=0

2 个答案:

答案 0 :(得分:0)

问题在于功能时间不包括有关日期的信息。这是一个问题,因为您的数据跨越两天。

您使用的数据类型应该能够包含有关当天的信息。 Posix是此数据类型。另外,由于Posix是R中的转到日期时间对象,因此绘制起来容易得多。

在绘制数据之前,时间列应具有正确的天数差异。当仅使用as.POSIXct转换列时,第2天的时间就像从第1天开始读取。这就是为什么我们必须在正确的条目上添加24小时。

在那之后,只需要绘图即可。我添加了ggplot2软件包的示例,因为我更喜欢这些绘图。

您可能会注意到,使用as.POSIXct会将错误的日期添加到您的时间信息中。不用担心,您可以将此日期用作虚拟日期。您不使用此日期本身,而只是使用它来处理天数差异。

library(ggplot2)

# Read in your data set    
d <- read.csv(file="Data 210519.csv", header = T)

# Read column into R date-time object
t <- as.POSIXct(d$Time24, format = "%H:%M:%OS")

# Add 24 hours to time the time on day 2.
startOfDayTwo <- as.POSIXct("00:00:00", format = "%H:%M:%OS")
endOfDayTwo <- as.POSIXct("07:35:00", format = "%H:%M:%OS")
t[t >= startOfDayTwo & t <= endOfDayTwo] <- t[t >= startOfDayTwo & t <= endOfDayTwo] + 24*60*60

plot(t,d$MCO2, type="l")

# arguably a nicer plot
ggplot(d,aes(x=t,y=MCO2)) + geom_line() +
  scale_x_datetime(date_breaks = "2 hour",
                   date_labels = "%I:%M %p") 

The picture that ggplot produces

答案 1 :(得分:0)

问题实际上是关于组合日期列和时间列以创建包含日期和时间的时间戳记。请注意,我建议将所有内容都当作格林尼治标准时间(GMT)时区处理。您可以选择所需的任何时区,然后坚持执行。

var myObj = {
    abc: 'ABC',
    bca: 'BCA',
    zzz: 'ZZZ',
    xxx: 'XXX',
    ccc: 'CCC',
}

var k = Object.keys (myObj);
for (var i = 0; i < k.length; i++) {
    console.log (k[i] + ": " + myObj[k[i]]);
}