如何用hh:mm绘制chron时间?

时间:2018-05-17 14:05:43

标签: r datetime time chron

我想将时间设为hh:minhh:min:ss。但是,由于我使用chron包(它将时间值恢复为一天的一小部分),ggplot不知道如何自动选择类型时间对象的比例,因此它使用连续绘制数据。一些数据样本:

> x$Time
 [1] 00:00:00 00:15:00 00:30:00 00:45:00 01:00:00 01:15:00 01:30:00 01:45:00 02:00:00
[10] 02:15:00 02:30:00 02:45:00 03:00:00 03:15:00 03:30:00 03:45:00 04:00:00 04:15:00

> x$Total
 [1]    1    4    0    0    4    0    0    0    0    0    0    0    0    0    0    0
[17]    0    0    0    0    2    0    0    0    0    0    0    0    2    0    7    9
[33]   27   87  143  251 1263 1797 2074 2171   16 2542 2924 3194 3185 3274 3282 3362

ggplot(aes(x = x$Hora, y = x$Sum_C.Total), data = x) + geom_point()

这给出了Y轴工作的图形,但X轴是从0到1的值(因为我的所有时间数据都是从00:00:0024:00:00)。如何将时间值中的这一小部分转换为ggplot可以将其绘制为hh:mm:sshh:mm

PS:我尝试过此解决方案(plot chron times as hours from origin),但它不允许我使用"%02d:00"格式。

1 个答案:

答案 0 :(得分:0)

我不知道以下是否是你想要的。如果不是,请这样说,我会删除这个答案。

首先在您的Time向量中阅读并填写一些Total

Time <- scan(what = character(), text = 
"00:00:00 00:15:00 00:30:00 00:45:00 01:00:00 01:15:00 01:30:00 01:45:00 02:00:00
02:15:00 02:30:00 02:45:00 03:00:00 03:15:00 03:30:00 03:45:00 04:00:00 04:15:00")

set.seed(1)
Total <- cumsum(rnorm(length(Time)))

现在是图表。我将创建一个data.frame列,其中包含一个类"times",然后将其设置为更短,没有秒数。

library(chron)

Time <- chron(times. = Time)
x <- data.frame(Hora = Time, Sum_C.Total = Total)

Hr <- sub(":00$", "", as.character(x$Hora))

ggplot(data = cbind(x, Hr), aes(x = Hr, y = Sum_C.Total)) +
    geom_point()

在我的屏幕显示器上,我必须最大化图形窗口,以便x轴标签不会叠加。