R: включать как месяц, так и год при построении временных рядов

#r #date #plot #time-series

#r #Дата #график #временные ряды

Вопрос:

У меня есть столбец даты типа = Дата

 > class(df$Date)
[1] "Date"
> df$Date
  [1] "2010-10-01" "2010-11-01" "2010-12-01" "2011-01-01" "2011-02-01" "2011-03-01"
  [7] "2011-04-01" "2011-05-01" "2011-06-01" "2011-07-01" "2011-08-01" "2011-09-01"
 [13] "2011-10-01" "2011-11-01" "2011-12-01" "2012-01-01" "2012-02-01" "2012-03-01"
 [19] "2012-04-01" "2012-05-01" "2012-06-01" "2012-07-01" "2012-08-01" "2012-09-01"
 [25] "2012-10-01" "2012-11-01" "2012-12-01" "2013-01-01" "2013-02-01" "2013-03-01"
 [31] "2013-04-01" "2013-05-01" "2013-06-01" "2013-07-01" "2013-08-01" "2013-09-01"
 [37] "2013-10-01" "2013-11-01" "2013-12-01" "2014-01-01" "2014-02-01" "2014-03-01"
 [43] "2014-04-01" "2014-05-01" "2014-06-01" "2014-07-01" "2014-08-01" "2014-09-01"
 [49] "2014-10-01" "2014-11-01" "2014-12-01" "2015-01-01" "2015-02-01" "2015-03-01"
 [55] "2015-04-01" "2015-05-01" "2015-06-01" "2015-07-01" "2015-08-01" "2015-09-01"
 [61] "2015-10-01" "2015-11-01" "2015-12-01" "2016-01-01" "2016-02-01" "2016-03-01"
 [67] "2016-04-01" "2016-05-01" "2016-06-01" "2016-07-01" "2016-08-01" "2016-09-01"
 [73] "2016-10-01" "2016-11-01" "2016-12-01" "2017-01-01" "2017-02-01" "2017-03-01"
 [79] "2017-04-01" "2017-05-01" "2017-06-01" "2017-07-01" "2017-08-01" "2017-09-01"
 [85] "2017-10-01" "2017-11-01" "2017-12-01" "2018-01-01" "2018-02-01" "2018-03-01"
 [91] "2018-04-01" "2018-05-01" "2018-06-01" "2018-07-01" "2018-08-01" "2018-09-01"
 [97] "2018-10-01" "2018-11-01" "2018-12-01" "2019-01-01" "2019-02-01" "2019-03-01"
[103] "2019-04-01" "2019-05-01" "2019-06-01" "2019-07-01" "2019-08-01" "2019-09-01"
[109] "2019-10-01" "2019-11-01" "2019-12-01" "2020-01-01" "2020-02-01" "2020-03-01"
[115] "2020-04-01" "2020-05-01" "2020-06-01" "2020-07-01"
 

Я пытаюсь построить его, выполнив следующее:

 plot(x=df$Date, y=df$Feature, type="l")
 

Однако график включает только год по оси x. Я бы хотел, чтобы он включал месяц и год, то есть в формате «%m%Y».

Как я могу этого добиться?

Ответ №1:

Вот решение с использованием ggplot пакета.

 library(ggplot2)

# Transform the Date column to date format
ggplot(df, aes(x = as.Date(Date),
               y = Feature))  
  # Draw line
  geom_line()  
  # Change x axis title
  labs(x = "Date (monthYear)")  
  # Set x breaks and the desired format for the date labels
  scale_x_date(date_breaks = "1 month", date_labels = "%m%Y")
 

Комментарии:

1. Это работает! Однако даже при изменении поворота и размера шрифта это совершенно нечитаемо. Каково ваше предложение по исправлению этого? Я добавил тему (axis.text.x = element_text(size = 8, angle = 45, hjust = 1))

2. Хм, может быть, попробовать что-то вроде scale_x_date(date_breaks = "1 month", date_labels = "%m-%Y") theme(axis.text.x = element_text(size=8, angle = 90, vjust = 0.5)) . Этот формат даты может быть более понятным для чтения (например, 05-2019), а также может помочь установка меток x в вертикальном положении.