如何在 hh:mm 中绘制时间?

How to plot chron times in hh:mm?

我试图将时间绘制为 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:我试过这个解决方案 (),但它不允许我使用 "%02d:00" 格式。

不知道下面是不是你想要的。如果不是,就这么说,我会删除这个答案。

首先读入你的 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)))

现在看图表。我将创建一个包含 class "times" 列的 data.frame,然后将其缩短,没有秒,用于情节。

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()

在我的屏幕监视器上,我必须最大化图形 window 以使 x 轴标签不叠加。