Как построить временной ряд в R (с примерами)


Часто вам может понадобиться построить временной ряд в R, чтобы визуализировать, как значения временного ряда меняются с течением времени.

В этом руководстве объясняется, как быстро это сделать с помощью библиотеки визуализации данных ggplot2 .

Базовый график временных рядов в R

Предположим, у нас есть следующий набор данных в R:

#create dataset
df <- data.frame(date = as.Date (" 2021-01-01 ") - 0:99,
 sales = runif (100, 10, 500) + seq (50, 149)^2)

#view first six rows
head(df)

 date sales
1 2021-01-01 2845.506
2 2020-12-31 2837.849
3 2020-12-30 3115.517
4 2020-12-29 2847.161
5 2020-12-28 3374.619
6 2020-12-27 3182.005

Мы можем использовать следующий код для создания базового графика временных рядов для этого набора данных с помощью ggplot2:

library (ggplot2)

#create time series plot
p <- ggplot(df, aes (x=date, y=sales)) +
 geom_line()

#display time series plot
p

Отформатируйте даты по оси X

Мы можем использовать функцию scale_x_date() * для форматирования дат, отображаемых по оси X графика. Эта функция принимает следующие аргументы:

  • %d: день в виде числа от 0 до 31.
  • %a: сокращенный день недели (например, «Вт»)
  • %A: Полный день недели (например, «Вторник»)
  • %m : Месяц от 0 до 12
  • %b: сокращенный месяц (например, «янв»)
  • %B: Месяц без сокращений (например, «январь»)
  • %y: 2-значный год (например, «21»)
  • %Y: 4-значный год (например, «2021»)
  • %W: неделя года от 0 до 52.

** Чтобы эта функция работала, переменная оси x должна быть переменной даты. Если он еще не один, вы можете быстро преобразовать его в один, используя as.Date( variable_name)* .

Следующий код показывает, как использовать один из этих форматов на практике:

p + scale_x_date ( date_labels = " %b %Y ") 

Вы также можете добавить более частые (или редкие) разрывы по оси X, используя аргумент date_breaks.Например, мы можем отобразить даты каждые две недели по оси x:

p + scale_x_date ( date_breaks = " 2 week ") 

Мы также можем легко наклонить метки оси X, используя следующий аргумент:

p + theme ( axis.text.x = element_text (angle= 50 , hjust= 1 ))

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

p <- ggplot(df, aes (x=date, y=sales)) +
 geom_line( color =" turquoise4 ") +
 theme_minimal() + 
 labs(x="", y=" Sales", title=" Total Sales (Past 100 Days) ") +
 theme( plot.title = element_text (hjust=0.5, size=20, face=" bold "))

p 

Дополнительные ресурсы

Полное руководство по лучшим темам ggplot2
Полное руководство по заголовкам ggplot2
Как создавать параллельные графики в ggplot2