R: as.POSIXct часовой пояс и scale_x_datetime проблемы в моем наборе данных

Я потратил некоторое время, пытаясь понять, почему часовые тики были сдвинуты, когда было применено scale_x_datetime. Я попытался дать часовой пояс, когда был создан столбец Date/Time. Я использовал ggplot и scale_x_datetime() из шкал пакетов. Часовые галочки были неправильными, а datapoint не совпадали со временем в столбце Дата/Время.

Вот несколько процедур для работы с моим набором данных.

  DF$DateTime<-as.POSIXct(DF$timestamp,format="%m/%d/%y %H:%M", tz="America/Toronto")
  DF$Date<-as.Date(DF$DateTime)

  lims <- as.POSIXct(strptime(c("2015-07-21 00:00","2015-07-23 00:00"), format = "%Y-%m-%d %H:%M"), tz="America/Toronto")    

  ggplot(DF) + geom_line(aes(x=DateTime, y=-Diff,group=Date)) + scale_x_datetime(limits =lims, breaks=date_breaks("2 hour"), labels=date_format("%m/%d %H:%M"))

Пропустить что-нибудь здесь? Пожалуйста, помогите мне разобраться. Большое спасибо!

Ответ 1

Функция date_format() принимает аргумент tz, который по умолчанию установлен на "UTC". Поэтому ваши метки преобразуются в UTC. Чтобы использовать часовой пояс "Америка/Торонто", вы можете сделать следующее:

scale_x_datetime(limits = lims, breaks = date_breaks("2 hour"),
    labels = date_format("%m/%d %H:%M", tz = "America/Toronto"))

Этот аргумент был введен с версией 0.2.5. Код, который использует date_format() для создания графиков в других часовых поясах, чем UTC, должен быть изменен после обновления.