Использование даты в scale_x_continuous с перерывами - PullRequest
2 голосов
/ 17 февраля 2020

Я пытаюсь заменить значения оси X, созданные с помощью шага, которые являются значениями 1:50. Я могу легко заменить их с помощью scale_x_continuous, но когда я использую перерывы, я получаю ошибку ниже. Я не могу использовать дату и время в функции графика, которую я использую, поэтому ищу обходной путь, чтобы получить дату на моей оси

 Date =      c( "2018-10-18 00:00:00 BST", "2018-10-18 00:10:00 BST", "2018-10-18 00:20:00 BST", "2018-10-18 00:30:00 BST", "2018-10-18 00:40:00 BST", "2018-10-18 00:50:00 BST",
                 "2018-10-18 01:00:00 BST", "2018-10-18 01:10:00 BST", "2018-10-18 01:20:00 BST", "2018-10-18 01:30:00 BST", "2018-10-18 01:40:00 BST", "2018-10-18 01:50:00 BST",
                 "2018-10-18 02:00:00 BST", "2018-10-18 02:10:00 BST", "2018-10-18 02:20:00 BST", "2018-10-18 02:30:00 BST", "2018-10-18 02:40:00 BST", "2018-10-18 02:50:00 BST",
                 "2018-10-18 03:00:00 BST", "2018-10-18 03:10:00 BST", "2018-10-18 03:20:00 BST", "2018-10-18 03:30:00 BST", "2018-10-18 03:40:00 BST", "2018-10-18 03:50:00 BST",
                 "2018-10-18 04:00:00 BST", "2018-10-18 04:10:00 BST", "2018-10-18 04:20:00 BST", "2018-10-18 04:30:00 BST", "2018-10-18 04:40:00 BST", "2018-10-18 04:50:00 BST",
                 "2018-10-18 05:00:00 BST", "2018-10-18 05:10:00 BST", "2018-10-18 05:20:00 BST", "2018-10-18 05:30:00 BST", "2018-10-18 05:40:00 BST", "2018-10-18 05:50:00 BST",
                 "2018-10-18 06:00:00 BST", "2018-10-18 06:10:00 BST", "2018-10-18 06:20:00 BST", "2018-10-18 06:30:00 BST", "2018-10-18 06:40:00 BST", "2018-10-18 06:50:00 BST",
                 "2018-10-18 07:00:00 BST", "2018-10-18 07:10:00 BST", "2018-10-18 07:20:00 BST", "2018-10-18 07:30:00 BST", "2018-10-18 07:40:00 BST", "2018-10-18 07:50:00 BST",
                 "2018-10-18 08:00:00 BST", "2018-10-18 08:10:00 BST")  


  Step  <- c(1:50)
  Value <- runif(50,0,10)
  Final <- data.frame(Step, Value)

                      ggplot(Final, aes(x = Step, y = Value)) + 
                        geom_line(size = 1) + 
                        geom_point() +
                        scale_x_continuous(labels=Date,breaks = seq(1, 50))       #works
                        scale_x_continuous(labels=Date,breaks = seq(1, 50,by=10)) #doesntwork

Error: `breaks` and `labels` must have the same length

Ответы [ 2 ]

2 голосов
/ 17 февраля 2020

Вам нужно также указать свои метки (даты в вашем случае):

ggplot(Final, aes(x = Step, y = Value)) + 
geom_line(size = 1) + 
geom_point() +
scale_x_continuous(labels=Date[seq(1, 50,by=10)],
                   breaks = seq(1, 50,by=10)) 
1 голос
/ 17 февраля 2020

Я бы отказался от создания Step и просто использовал бы ваши даты непосредственно в качестве значения X на вашем графике. Причина, по которой R не будет подмножеством, заключается в том, что он считает ваши 50 дат 50-ю строками. Преобразовать в класс datettime и манипулировать им с помощью scale_x_datetime():

Value <- runif(50,0,10)
Final <- data.frame(Value, Date)
Final$Date = as.POSIXct(Date)

ggplot(Final, aes(x = Date, y = Value, group = 1)) + 
  geom_line(size = 1) + 
  geom_point()  +
  scale_x_datetime(date_breaks = "2 hours", date_labels = "%H:%M")
...