Показать дату в ggplot как ось х - PullRequest
0 голосов
/ 07 мая 2019

Мои данные имеют формат

["201301",1111],["201302",1111],["201702",2222],["201603",3333].

Однако, когда я пытаюсь построить его как гистограмму, он выглядит не очень хорошо, поскольку значение x считалось числом. Между годами существует большой разрыв. enter image description here

Можно ли устранить пробел?

1 Ответ

1 голос
/ 07 мая 2019

Если я правильно понимаю, ОП хочет отобразить месячные данные, в которых год и месяц кодируются в формате «ГГГГММ» в переменной V1.

Я могу воспроизвести проблему по

# create sample data
years <- 2013:2017
DF <- data.frame(V1 = 100 * rep(years, each = 12) + rep(1:12, length(years)),
                 V2 = rep(1:12, length(years)))

library(ggplot2)
ggplot(DF, aes(V1, V2)) +
         geom_col()

enter image description here

Чтобы построить эти ежемесячные данные, V1 необходимо преобразовать в полноценные даты, например, 201304 становится датой 2013-04-01. Итак, каждый год-месяц сопоставляется с первым днем ​​месяца.

С помощью пакета lubridate мы получаем

ggplot(DF, aes(lubridate::ymd(V1, truncated = 1L), V2)) +
  geom_col()

enter image description here

ggplot() распознает, что ось x теперь является классом Date, и масштабируется соответственно. Использование шкалы Date дает преимущество в том, что она корректно масштабируется, даже если отсутствуют точки данных.

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