Как изобразить время хрон в чч: мм? - PullRequest
0 голосов
/ 17 мая 2018

Я пытаюсь представить время как hh:min или hh:min:ss.Но так как я использую пакет chron (он восстанавливает значения времени как доли дня), ggplot не знает, как автоматически выбирать масштаб для объекта типа time, поэтому он использует непрерывный график для построения данных.Некоторая выборка данных:

> 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:00 до 24:00:00).Как я могу преобразовать эту долю дня в значения времени, чтобы ggplot мог отобразить ее как hh:mm:ss или hh:mm?

PS: я пробовал это решение ( график времени хронографа как часы отorigin ), но он не позволяет мне использовать формат "%02d:00".

1 Ответ

0 голосов
/ 17 мая 2018

Я не знаю, если вам нужно следующее. если это не так, просто скажите, и я удалю этот ответ.

Сначала прочитайте ваш 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 не перекрывались.

...