Set up

library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(ggplot2)
library(lubridate)
## 
## Attaching package: 'lubridate'
## The following objects are masked from 'package:base':
## 
##     date, intersect, setdiff, union
library(timetk)

timetk::plot_time_series
## function (.data, .date_var, .value, .color_var = NULL, .facet_vars = NULL, 
##     .facet_ncol = 1, .facet_nrow = 1, .facet_scales = "free_y", 
##     .facet_dir = "h", .facet_collapse = FALSE, .facet_collapse_sep = " ", 
##     .facet_strip_remove = FALSE, .line_color = "#2c3e50", .line_size = 0.5, 
##     .line_type = 1, .line_alpha = 1, .y_intercept = NULL, .y_intercept_color = "#2c3e50", 
##     .smooth = TRUE, .smooth_period = "auto", .smooth_message = FALSE, 
##     .smooth_span = NULL, .smooth_degree = 2, .smooth_color = "#3366FF", 
##     .smooth_size = 1, .smooth_alpha = 1, .legend_show = TRUE, 
##     .title = "Time Series Plot", .x_lab = "", .y_lab = "", .color_lab = "Legend", 
##     .interactive = TRUE, .plotly_slider = FALSE, .trelliscope = FALSE, 
##     .trelliscope_params = list()) 
## {
##     date_var_expr <- rlang::enquo(.date_var)
##     value_expr <- rlang::enquo(.value)
##     color_var_expr <- rlang::enquo(.color_var)
##     if (!is.data.frame(.data)) {
##         stop(call. = FALSE, "plot_time_series(.data) is not a data-frame or tibble. Please supply a data.frame or tibble.")
##     }
##     if (rlang::quo_is_missing(date_var_expr)) {
##         stop(call. = FALSE, "plot_time_series(.date_var) is missing. Please supply a date or date-time column.")
##     }
##     if (rlang::quo_is_missing(value_expr)) {
##         stop(call. = FALSE, "plot_time_series(.value) is missing. Please a numeric column.")
##     }
##     UseMethod("plot_time_series", .data)
## }
## <bytecode: 0x7fe91f0326a0>
## <environment: namespace:timetk>

Plotting time series

taylor_30_min
## # A tibble: 4,032 × 2
##    date                value
##    <dttm>              <dbl>
##  1 2000-06-05 00:00:00 22262
##  2 2000-06-05 00:30:00 21756
##  3 2000-06-05 01:00:00 22247
##  4 2000-06-05 01:30:00 22759
##  5 2000-06-05 02:00:00 22549
##  6 2000-06-05 02:30:00 22313
##  7 2000-06-05 03:00:00 22128
##  8 2000-06-05 03:30:00 21860
##  9 2000-06-05 04:00:00 21751
## 10 2000-06-05 04:30:00 21336
## # ℹ 4,022 more rows
taylor_30_min %>%
  plot_time_series(.date_var = date, .value = value)

Plotting Groups

m4_daily %>% count(id)
## # A tibble: 4 × 2
##   id        n
##   <fct> <int>
## 1 D10     674
## 2 D160   4197
## 3 D410    676
## 4 D500   4196
m4_daily %>%
  group_by(id) %>%
  plot_time_series(.date_var = date,
                   .value = value,
                   .facet_ncol = 2,
                   .facet_scales = "free",
                   .interactive = FALSE)

Visualizing transformations and sub-groups

m4_hourly %>% count(id)
## # A tibble: 4 × 2
##   id        n
##   <fct> <int>
## 1 H10     700
## 2 H50     700
## 3 H150    700
## 4 H410    960
m4_hourly %>%
  group_by(id) %>%
  plot_time_series(.date_var = date,
                   .value = log(value),
                   .facet_ncol = 2,
                   .facet_scales = "free", .color_var = week(date))

Plot visualization and customization

taylor_30_min %>%
  plot_time_series(date, value, .color_var = month(date, label = TRUE),
                   
                   # Return Static ggplot
                   .interactive = FALSE,
                   
                   # Customizing
                   .title = "Taylor's MegaWatt Data",
                   .x_lab = "Date (30 Minute Intervals)",
                   .y_lab = "Energy Demand (MW)",
                   .color_lab = "Month")

Box Plots

m4_monthly %>% count(id)
## # A tibble: 4 × 2
##   id        n
##   <fct> <int>
## 1 M1      469
## 2 M2      469
## 3 M750    306
## 4 M1000   330
m4_monthly %>%
  filter_by_time(.date_var = date, .end_date = "1976") %>%
  group_by(id) %>%
  plot_time_series_boxplot(.date_var = date,
                           .value    = value,
                           .period   = "1 year",
                           .facet_ncol = 2)
## Warning: The following aesthetics were dropped during statistical transformation:
## y_plotlyDomain
## ℹ This can happen when ggplot fails to infer the correct grouping structure in
##   the data.
## ℹ Did you forget to specify a `group` aesthetic or to convert a numerical
##   variable into a factor?
## The following aesthetics were dropped during statistical transformation:
## y_plotlyDomain
## ℹ This can happen when ggplot fails to infer the correct grouping structure in
##   the data.
## ℹ Did you forget to specify a `group` aesthetic or to convert a numerical
##   variable into a factor?

Regression Plots

m4_monthly %>%
  group_by(id) %>%
  plot_time_series_regression(.date_var = date,
                              .facet_ncol = 2,
                              .formula = log(value) ~ as.numeric(date) + month(date, label = TRUE),
                              .show_summary = FALSE)