Вопрос по timezone, ggplot2, r – Каков соответствующий синтаксис аргумента часового пояса для scale_datetime () в ggplot 0.9.0

3

Я не могу найти информацию на ggplot20.9.0 документация, 0.9.0 руководство по переходу или поиск.

Я предполагаю, что в более ранних версиях вы добавляетеtz аргументscale_x_datetime, Я пытался разместитьtz аргумент в разных местах в пределахscale_x_datetime но продолжайте получать ошибки. Увидеть ниже.

Мои данные даты и времени находятся вPOSIXct формат с часовым поясом GMT. Когда я строю график, тики и разрывы оси показывают мой местный часовой пояс (EST). Я хотел бы, чтобы полночь на оси была полуночью в часовом поясе GMT. Как правильно сделать это в ggplot2 0.9.0?

<code>attributes(data$date)
# $class
# [1] "POSIXct" "POSIXt" 

# $tzone
# [1] "GMT"

ggplot(data, aes(x = date)) +
  geom_line(aes(y = count)) +
  scale_x_datetime(breaks = date_breaks("1 day"),
                   labels = date_format("%d", tz = "UTC"))
# Error in date_format("%d", tz = "UTC") : unused argument(s) (tz = "UTC")

ggplot(data, aes(x = date)) +
  geom_line(aes(y = count)) +
  scale_x_datetime(breaks = date_breaks("1 day", tz = "UTC"),
                   labels = date_format("%d"))
# Error in date_breaks("1 day", tz = "UTC") : 
#   unused argument(s) (tz = "UTC")

ggplot(data, aes(x = date)) +
  geom_line(aes(y = count)) +
  scale_x_datetime(breaks = date_breaks("1 day"),
                   labels = date_format("%d"),
                   tz = "UTC")
# Error in continuous_scale(aesthetics, "datetime", identity, breaks = breaks,  : 
#   unused argument(s) (tz = "UTC")
</code>

Ваш Ответ

2   ответа
5

но дополнительные аргументы не могут быть переданы через функцию форматирования, поэтому они должны быть переданы в функцию генератора:

date_format_tz <- function(format = "%Y-%m-%d", tz = "UTC") {
  function(x) format(x, format, tz=tz)
}

который затем может быть назван как:

scale_x_datetime(breaks = date_breaks("1 day"),
                 labels = date_format_tz("%d", tz="UTC"))
4

весы 2.2 (~ июль 2012) можно пройтиtz аргументtime_trans.

Например, это форматирует временные метки в UTC и не требует дополнительного кодирования:

+scale_x_continuous(trans = time_trans(tz = "UTC"))

Похожие вопросы