R: Как вывести на печать только время по оси х, не указав дату - PullRequest
0 голосов
/ 13 мая 2018

У меня есть объект xts, снимок данных выглядит следующим образом:

ts <- structure(c(620519.432512971, 619086.596917204, 620478.784694651, 
620997.044378227, 620885.262877848, 620275.545603053), index = structure(c(1519954199.9845, 
1519955999.7115, 1519957799.9675, 1519959599.9935, 1519961399.9365, 
1519963199.2225), tzone = "", tclass = c("POSIXct", "POSIXt")), .indexCLASS = c("POSIXct", 
"POSIXt"), .indexTZ = "", tclass = c("POSIXct", "POSIXt"), tzone = "", class = c("xts", 
"zoo"), .Dim = c(6L, 1L), .Dimnames = list(NULL, "yy"))

Все отметки времени в пределах одной и той же даты , и я пытаюсь добавить больше отметок на оси x (время), которых мне удалось достичь. Это выглядит следующим образом:

ggplot(data=ts) + 
geom_line(aes(x=Index,y=yy,colour = "yy"),na.rm=T) + 
scale_x_datetime(date_breaks ="20 min")

enter image description here

Как видите, приведенные выше метки времени верны, но я хочу удалить часть даты и просто указать время на оси X. Поэтому я попробовал следующий код:

ggplot(data=ts) + 
geom_line(aes(x=Index,y=yy,colour = "yy"),na.rm=T) + 
scale_x_datetime(date_breaks ="20 min",labels = date_format("%H:%M:%S"))

Но времена все неправильные. Что мне нужно сделать, чтобы исправить это, чтобы печатать только время, не указав дату, поскольку все данные xts находятся в пределах одной и той же даты?

enter image description here

Ответы [ 2 ]

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

Я полагаю, что ваше время конвертируется в время UTC, когда вы их наносите.Вы можете конвертировать в свой часовой пояс.Вот как я могу использовать часовой пояс "США / Тихий океан".Я добавил аргумент tz к date_format

ggplot(data=ts) + 
     geom_line(aes(x=Index,y=yy,colour = "yy"),na.rm=T) + 
     scale_x_datetime(date_breaks ="20 min",
                      labels = date_format("%H:%M:%S", tz = "US/Pacific"))

Возможно, вам придется изменить часовой пояс (см. OlsonNames()

enter image description here

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

Это очень просто,

ggplot(data=ts) + 
        geom_line(aes(x = Index,y = yy,colour = "yy"), na.rm=T) + 
        scale_x_datetime(date_breaks = "20 min", date_labels = "%H:%M:%S")

Вам просто нужно использовать параметр date_labels, чтобы установить опцию форматирования вашего объекта datetime.

enter image description here

Источники:
- http://ggplot2.tidyverse.org/reference/scale_date.html
- https://www.stat.berkeley.edu/~s133/dates.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...