Как изменить отображение объектов POSIXct в заголовке фасетов? - PullRequest
0 голосов
/ 26 марта 2019

Я пытаюсь создать график ggplot2, используя facet_grid (). Для каждого фасета должна быть указана дата (здесь это объект POSIXct), и я хотел бы изменить способ ее отображения.

Как я могу контролировать способ отображения объектов POSIXct в заголовке фасетов ggplot2?

Пример: вот как это отображается: «2019-03-29» и вот как бы я хотел, чтобы это было написано: "29/03/2018"

Я уже посмотрел на функцию labeller, но я не могу понять, как использовать ее для изменения способа отображения объекта POSIXct. Может быть, я что-то упустил. Я знаю, что метки фасетов можно изменить «вручную», но здесь я хочу найти решение, которое работает для любого объекта POSIXct.

# create a dummy dataframe named ex
ex = structure(list(date = structure(c(1510531200, 1510531200, 1522195200, 
                                  1522195200), class = c("POSIXct", "POSIXt"), tzone = "UTC"), 
               cat = c("a", "b", "a", "b"), measure = c(0.0777420913800597, 
                                                        0.71574708330445, 0.725231731543317, 0.217509124660864)), row.names = c(NA, 
                                                                                                                                -4L), vars = "date", indices = list(0:1, 2:3), group_sizes = c(2L, 
                                                                                                                                                                                               2L), biggest_group_size = 2L, labels = structure(list(date = structure(c(1510531200, 
                                                                                                                                                                                                                                                                        1522195200), class = c("POSIXct", "POSIXt"), tzone = "UTC")), row.names = c(NA, 
                                                                                                                                                                                                                                                                                                                                                    -2L), class = "data.frame", vars = "date", indices = list(c(0L, 
                                                                                                                                                                                                                                                                                                                                                                                                                1L, 8L, 9L, 16L, 17L), c(2L, 3L, 4L, 5L, 10L, 11L, 12L, 13L, 
                                                                                                                                                                                                                                                                                                                                                                                                                                         18L, 19L, 20L, 21L), c(6L, 7L, 14L, 15L, 22L, 23L)), group_sizes = c(6L, 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              12L, 6L), biggest_group_size = 12L, labels = structure(list(date = structure(c(1510531200, 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             1522195200, 1543881600), class = c("POSIXct", "POSIXt"), tzone = "UTC")), row.names = c(NA, 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     -3L), class = "data.frame", vars = "date"), drop = TRUE), drop = TRUE, class = c("grouped_df", 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      "tbl_df", "tbl", "data.frame"))

# create a graph

plot_ex = ggplot(ex, aes(x = cat, y = measure)) +
  geom_bar(stat = "identity") +
  facet_grid(.~date)
print(plot_ex)

Фасеты называются "2017-11-13" и "2018-03-28". Я хочу, чтобы они были "13/11/2017" и "28/03/2018".

Большое спасибо за вашу помощь,

Ответы [ 2 ]

2 голосов
/ 26 марта 2019

Вы можете изменить способ печати дат с помощью format.Используя это, мы можем установить соответствующий ярлык без изменения столбца data.frame.

ggplot(ex, aes(x = cat, y = measure)) +
  geom_bar(stat = "identity") +
  facet_grid(.~date, labeller = function(x) format(x, '%d/%m/%Y'))

enter image description here

1 голос
/ 26 марта 2019

Мы можем использовать strftime.

ex$date <- strftime(ex$date, format="%d/%m/%Y")

library(ggplot2)
plot_ex <- ggplot(ex, aes(x=cat, y=measure)) +
  geom_bar(stat="identity") +
  facet_grid(.~date)
print(plot_ex)

enter image description here

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