View source: R/plot-time_series_boxplot.R
plot_time_series_boxplot | R Documentation |
A boxplot function that generates interactive plotly
plots
for time series.
plot_time_series_boxplot(
.data,
.date_var,
.value,
.period,
.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_func = ~mean(.x, na.rm = 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()
)
.data |
A |
.date_var |
A column containing either date or date-time values |
.value |
A column containing numeric values |
.period |
A time series unit of aggregation for the boxplot. Examples include:
|
.color_var |
A categorical column that can be used to change the line color |
.facet_vars |
One or more grouping columns that broken out into |
.facet_ncol |
Number of facet columns. |
.facet_nrow |
Number of facet rows (only used for |
.facet_scales |
Control facet x & y-axis ranges. Options include "fixed", "free", "free_y", "free_x" |
.facet_dir |
The direction of faceting ("h" for horizontal, "v" for vertical). Default is "h". |
.facet_collapse |
Multiple facets included on one facet strip instead of multiple facet strips. |
.facet_collapse_sep |
The separator used for collapsing facets. |
.facet_strip_remove |
Whether or not to remove the strip and text label for each facet. |
.line_color |
Line color. Overrided if |
.line_size |
Line size. |
.line_type |
Line type. |
.line_alpha |
Line alpha (opacity). Range: (0, 1). |
.y_intercept |
Value for a y-intercept on the plot |
.y_intercept_color |
Color for the y-intercept |
.smooth |
Logical - Whether or not to include a trendline smoother.
Uses See |
.smooth_func |
Defines how to aggregate the .value to show the smoothed trendline.
The default is
|
.smooth_period |
Number of observations to include in the Loess Smoother.
Set to "auto" by default, which uses |
.smooth_message |
Logical.
Whether or not to return the trend selected as a message.
Useful for those that want to see what |
.smooth_span |
Percentage of observations to include in the Loess Smoother.
You can use either period or span. See |
.smooth_degree |
Flexibility of Loess Polynomial. Either 0, 1, 2 (0 = lest flexible, 2 = more flexible). |
.smooth_color |
Smoother line color |
.smooth_size |
Smoother line size |
.smooth_alpha |
Smoother alpha (opacity). Range: (0, 1). |
.legend_show |
Toggles on/off the Legend |
.title |
Title for the plot |
.x_lab |
X-axis label for the plot |
.y_lab |
Y-axis label for the plot |
.color_lab |
Legend label if a |
.interactive |
Returns either a static ( |
.plotly_slider |
If TRUE, returns a plotly date range slider. |
.trelliscope |
Returns either a normal plot or a trelliscopejs plot (great for many time series)
Must have |
.trelliscope_params |
Pass parameters to the
|
plot_time_series_boxplot()
is a scalable function that works with both ungrouped and grouped
data.frame
objects (and tibbles
!).
Interactive by Default
plot_time_series_boxplot()
is built for exploration using:
Interactive Plots: plotly
(default) - Great for exploring!
Static Plots: ggplot2
(set .interactive = FALSE
) - Great for PDF Reports
By default, an interactive plotly
visualization is returned.
Scalable with Facets & Dplyr Groups
plot_time_series_boxplot()
returns multiple time series plots using ggplot2
facets:
group_by()
- If groups are detected, multiple facets are returned
plot_time_series_boxplot(.facet_vars)
- You can manually supply facets as well.
Can Transform Values just like ggplot
The .values
argument accepts transformations just like ggplot2
.
For example, if you want to take the log of sales you can use
a call like plot_time_series_boxplot(date, log(sales))
and the log transformation
will be applied.
Smoother Period / Span Calculation
The .smooth = TRUE
option returns a smoother that is calculated based on either:
A .smooth_func
: The method of aggregation.
Usually an aggregation like mean
is used.
The purrr
-style function syntax can be used to apply complex functions.
A .smooth_period
: Number of observations
A .smooth_span
: A percentage of observations
By default, the .smooth_period
is automatically calculated using 75% of the observertions.
This is the same as geom_smooth(method = "loess", span = 0.75)
.
A user can specify a time-based window (e.g. .smooth_period = "1 year"
)
or a numeric value (e.g. smooth_period = 365
).
Time-based windows return the median number of observations in a window using tk_get_trend()
.
A static ggplot2
plot or an interactive plotly
plot
library(dplyr)
library(lubridate)
# Works with individual time series
FANG %>%
filter(symbol == "FB") %>%
plot_time_series_boxplot(
date, adjusted,
.period = "3 month",
.interactive = FALSE)
# Works with groups
FANG %>%
group_by(symbol) %>%
plot_time_series_boxplot(
date, adjusted,
.period = "3 months",
.facet_ncol = 2, # 2-column layout
.interactive = FALSE)
# Can also group inside & use .color_var
FANG %>%
mutate(year = year(date)) %>%
plot_time_series_boxplot(
date, adjusted,
.period = "3 months",
.facet_vars = c(symbol, year), # add groups/facets
.color_var = year, # color by year
.facet_ncol = 4,
.facet_scales = "free",
.interactive = FALSE)
# Can apply transformations to .value or .color_var
# - .value = log(adjusted)
# - .color_var = year(date)
FANG %>%
plot_time_series_boxplot(
date, log(adjusted),
.period = "3 months",
.color_var = year(date),
.facet_vars = contains("symbol"),
.facet_ncol = 2,
.facet_scales = "free",
.y_lab = "Log Scale",
.interactive = FALSE)
# Can adjust the smoother
FANG %>%
group_by(symbol) %>%
plot_time_series_boxplot(
date, adjusted,
.period = "3 months",
.smooth = TRUE,
.smooth_func = median, # Smoother function
.smooth_period = "5 years", # Smoother Period
.facet_ncol = 2,
.interactive = FALSE)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.