Сначала давайте создадим пример данных.Время сохраняется с использованием lubridate
hm
, так как это кажется наиболее подходящим.
library(tibble)
library(lubridate)
#>
#> Attaching package: 'lubridate'
#> The following object is masked from 'package:base':
#>
#> date
(
data <- tibble(
Time = hm('09:00', '10:30'),
Value = 1
)
)
#> # A tibble: 2 x 2
#> Time Value
#> <S4: Period> <dbl>
#> 1 9H 0M 0S 1
#> 2 10H 30M 0S 1
Вот как я бы хотел, чтобы график выглядел.Сейчас я указал перерывы вручную с получасовыми интервалами.
library(ggplot2)
library(scales)
ggplot(data, aes(Time, Value)) +
geom_point() +
scale_x_time(breaks = hm('09:00', '09:30', '10:00', '10:30'))
Я хотел бы создать эти перерывы автоматически с получасовыми интервалами. При попытке использования scales::date_breaks
выдается ошибка.
ggplot(data, aes(Time, Value)) +
geom_point() +
scale_x_time(breaks = date_breaks('30 mins'))
#> Error in UseMethod("fullseq"): no applicable method for 'fullseq' applied to an object of class "c('hms', 'difftime')"
При попытке создания разрывов с помощью seq
также выдается ошибка.
seq(hm('09:00'), hm('10:30'), hm('00:30'))
#> Note: method with signature 'Period#ANY' chosen for function '-',
#> target signature 'Period#Period'.
#> "ANY#Period" would also be valid
#> estimate only: convert to intervals for accuracy
#> Error in if (sum(values - trunc(values))) {: argument is not interpretable as logical