Title: | Supporting Graphs for Analysing Time Series |
Version: | 0.2.9 |
Description: | Provides 'ggplot2' graphics for analysing time series data. It aims to fit into the 'tidyverse' and grammar of graphics framework for handling temporal data. |
License: | GPL (≥ 3) |
URL: | https://pkg.earo.me/sugrrants/ |
BugReports: | https://github.com/earowang/sugrrants/issues |
Depends: | ggplot2 (≥ 2.2.0), R (≥ 3.1.3) |
Imports: | dplyr (≥ 0.8.0), grid, gtable, lubridate (≥ 1.7.1), rlang (≥ 0.2.0) |
Suggests: | covr, knitr, plotly, readr, rmarkdown, testthat, tidyr, tsibble (≥ 0.8.0), viridis |
VignetteBuilder: | knitr |
Encoding: | UTF-8 |
Language: | en-GB |
LazyData: | true |
RoxygenNote: | 7.2.3 |
NeedsCompilation: | no |
Packaged: | 2024-03-12 00:50:48 UTC; earo |
Author: | Earo Wang |
Maintainer: | Earo Wang <earo.wang@gmail.com> |
Repository: | CRAN |
Date/Publication: | 2024-03-12 05:20:03 UTC |
sugrrants: supporting graphs for analysing time series
Description
Provides 'ggplot2' graphics for analysing time series data. It aims to fit into the 'tidyverse' and grammar of graphics framework for handling temporal data.
Author(s)
Maintainer: Earo Wang earo.wang@gmail.com (ORCID)
Authors:
See Also
Useful links:
Key drawing functions
Description
Key drawing functions
Usage
draw_key_acf(data, params, size)
Arguments
data |
A single row data frame containing the scaled aesthetics to display in this key |
params |
A list of additional parameters supplied to the geom. |
size |
Width and height of key in mm. |
Value
A grid grob
Lay out panels in a calendar format
Description
Lay out panels in a calendar format
Usage
facet_calendar(
date,
format = "%b %d",
week_start = getOption("lubridate.week.start", 1),
nrow = NULL,
ncol = NULL,
scales = "fixed",
shrink = TRUE,
dir = "h",
labeller = "label_value",
strip.position = "top"
)
Arguments
date |
A variable that contains dates or an expression that generates dates will be mapped in the calendar. |
format |
A character string, such as |
week_start |
Day on which week starts following ISO conventions -
1 means Monday (default), 7 means Sunday. You can set |
nrow , ncol |
Number of rows and columns defined for "monthly" calendar
layout. If |
scales |
Should scales be fixed ( |
shrink |
If |
dir |
Direction of calendar: "h" for horizontal (the default) or "v" for vertical. |
labeller |
A function that takes one data frame of labels and
returns a list or data frame of character vectors. Each input
column corresponds to one factor. Thus there will be more than
one with |
strip.position |
By default, the labels are displayed on the top of
the plot. Using |
Details
A monthly calendar is set up as a 5 by 7 layout matrix. Each month could extend over six weeks but in these months is to wrap the last few days up to the top row of the block.
See Also
frame_calendar for a compact calendar display, by quickly transforming the data.
Examples
fs <- hourly_peds %>%
dplyr::filter(Date < as.Date("2016-05-01"))
fs %>%
ggplot(aes(x = Time, y = Hourly_Counts)) +
geom_line(aes(colour = Sensor_Name)) +
facet_calendar(~ Date, nrow = 2) + # or ~ as.Date(Date_Time)
theme(legend.position = "bottom")
Rearrange a temporal data frame to a calendar-based data format using linear algebra
Description
Temporal data of daily intervals or higher frequency levels can be organised
into a calendar-based format, which is useful for visually presenting
calendar-related activities or multiple seasonality (such as time of day,
day of week, day of month). The function only returns a rearranged data frame,
and ggplot2
takes care of the plotting afterwards. It allows more
flexibility for users to visualise the data in various ways.
Usage
frame_calendar(
data,
x,
y,
date,
calendar = "monthly",
dir = "h",
week_start = getOption("lubridate.week.start", 1),
nrow = NULL,
ncol = NULL,
polar = FALSE,
scale = "fixed",
width = 0.95,
height = 0.95,
margin = NULL,
...
)
prettify(plot, label = c("label", "text"), locale, abbr = TRUE, ...)
Arguments
data |
A data frame or a grouped data frame including a |
x |
A bare (or unquoted) variable mapping to x axis, for example time of day. If integer 1 is specified, it simply returns calendar grids on x without transformation. |
y |
A bare (or unquoted) variable or more mapping to y axis. More than
one variable need putting to |
date |
A |
calendar |
Type of calendar. (1) "monthly" calendar (the default) organises
the |
dir |
Direction of calendar: "h" for horizontal (the default) or "v" for vertical. |
week_start |
Day on which week starts following ISO conventions -
1 means Monday (default), 7 means Sunday. You can set |
nrow , ncol |
Number of rows and columns defined for "monthly" calendar
layout. If |
polar |
FALSE (the default) for Cartesian or TRUE for polar coordinates. |
scale |
"fixed" (the default) for fixed scale. "free" for scaling conditional on each daily cell, "free_wday" for scaling on weekdays, "free_mday" for scaling on day of month. |
width , height |
Numerics between 0 and 1 to specify the width/height for each glyph. |
margin |
Numerics of length two between 0 and 1 to specify the horizontal and vertical margins between month panels. |
... |
Extra arguments passed to |
plot |
A "ggplot" object or "plotly". |
label |
If "label" is specified, it will add month/week text on the
|
locale |
ISO 639 language code. The default is "en" (i.e. US English). For other languages support, package readr needs to be installed. See readr::locale for more details. |
abbr |
Logical to specify if the abbreviated version of label should be used. |
Details
The calendar-based graphic can be considered as small multiples
of sub-series arranged into many daily cells. For every multiple (or
facet), it requires the x
variable mapped to be time of day and y
to
value. New x
and y
are computed and named with a .
prefixed to variable
according to x
and y
respectively, and get ready for ggplot2
aesthetic
mappings. In conjunction with group_by()
, it allows the grouped variable
to have their individual scales. For more details, see vignette("frame-calendar", package = "sugrrants")
Value
A data frame or a dplyr::tibble with newly added columns of .x
, .y
. .x
and .y
together give new coordinates computed for different types of
calendars. date
groups the same dates in a chronological order, which is
useful for geom_line
or geom_path
. The basic use is ggplot(aes(x = .x, y = .y, group = date)) + geom_*
. The variable names .x
and .y
reflect
the actual x
and y
with a prefix .
.
See Also
facet_calendar for a fully-fledged faceting calendar with formal labels and axes.
Examples
library(dplyr, warn.conflicts = FALSE)
# compute the calendar layout for the data frame
calendar_df <- hourly_peds %>%
filter(Sensor_ID == 13, Year == 2016) %>%
frame_calendar(x = Time, y = Hourly_Counts, date = Date, nrow = 4)
# ggplot
p1 <- calendar_df %>%
ggplot(aes(x = .Time, y = .Hourly_Counts, group = Date)) +
geom_line()
prettify(p1, size = 3, label.padding = unit(0.15, "lines"))
# use in conjunction with group_by()
grped_calendar <- hourly_peds %>%
filter(Year == "2017", Month == "March") %>%
group_by(Sensor_Name) %>%
frame_calendar(x = Time, y = Hourly_Counts, date = Date, week_start = 7)
p2 <- grped_calendar %>%
ggplot(aes(x = .Time, y = .Hourly_Counts, group = Date)) +
geom_line() +
facet_wrap(~ Sensor_Name, nrow = 2)
prettify(p2)
## Not run:
# allow for different languages
# below gives simplied Chinese labels with STKaiti font family,
# assuming this font installed in user's local system
prettify(p2, locale = "zh", family = "STKaiti")
# plotly example
if (!requireNamespace("plotly", quietly = TRUE)) {
stop("Please install the 'plotly' package to run these following examples.")
}
library(plotly)
pp <- calendar_df %>%
group_by(Date) %>%
plot_ly(x = ~ .Time, y = ~ .Hourly_Counts) %>%
add_lines(text = ~ paste("Count: ", Hourly_Counts, "<br> Time: ", Time))
prettify(pp)
## End(Not run)
Autocorrelation for temporal data
Description
Since the data input is data.frame
, it's better to sort the date-times
from early to recent and make implicit missing values explicit before using
geom_acf
.
Usage
geom_acf(
mapping = NULL,
data = NULL,
position = "identity",
na.rm = FALSE,
show.legend = NA,
inherit.aes = TRUE,
lag.max = NULL,
type = "correlation",
level = 0.95,
...
)
Arguments
mapping |
Set of aesthetic mappings created by |
data |
The data to be displayed in this layer. There are three options: If A A |
position |
Position adjustment, either as a string naming the adjustment
(e.g. |
na.rm |
Logical. If |
show.legend |
logical. Should this layer be included in the legends?
|
inherit.aes |
If |
lag.max |
An integer indicating the maximum lag at which to calculate the acf. |
type |
A character string giving the type of the acf to be computed. The |
level |
A numeric defining the confidence level. If |
... |
Other arguments passed on to |
Examples
library(dplyr)
fstaff <- hourly_peds %>%
filter(Sensor_ID == 13)
# use ggplot2
fstaff %>%
ggplot(aes(x = ..lag.., y = Hourly_Counts)) +
geom_acf()
Pedestrian counts in Melbourne city
Description
A dataset containing the pedestrian counts at hourly intervals from 2016-01-01 to 2017-04-20 at 7 sensors in the city of Melbourne. The variables are as follows:
Usage
hourly_peds
Format
A tibble with 78755 rows and 9 variables:
- Date_Time
Date time when the pedestrian counts are recorded
- Year
Year associated with Date_Time
- Month
Month associated with Date_Time
- Mdate
Day of month associated with Date_Time
- Day
Weekday associated with Date_Time
- Time
Hour associated with Date_Time
- Sensor_ID
Sensor identifiers
- Sensor_Name
Sensor names
- Hourly_Counts
Hourly pedestrian counts
Examples
hourly_peds
Objects exported from other packages
Description
These objects are imported from other packages. Follow the links below to see their documentation.
Autocorrelation for temporal data
Description
Since the data input is data.frame
, it's better to sort the date-times
from early to recent and make implicit missing values explicit before using
stat_acf
.
Usage
stat_acf(
mapping = NULL,
data = NULL,
geom = "bar",
position = "identity",
na.rm = FALSE,
show.legend = NA,
inherit.aes = TRUE,
lag.max = NULL,
type = "correlation",
level = 0.95,
...
)
Arguments
mapping |
Set of aesthetic mappings created by |
data |
The data to be displayed in this layer. There are three options: If A A |
geom |
The geometric object to use to display the data, either as a
|
position |
Position adjustment, either as a string naming the adjustment
(e.g. |
na.rm |
Logical. If |
show.legend |
logical. Should this layer be included in the legends?
|
inherit.aes |
If |
lag.max |
An integer indicating the maximum lag at which to calculate the acf. |
type |
A character string giving the type of the acf to be computed. The default is the "correlation" and other options are "covariance" and "partial". |
level |
A numeric defining the confidence level. If |
... |
Other arguments passed on to |
Examples
library(dplyr)
fstaff <- hourly_peds %>%
filter(Sensor_ID == 13)
# use ggplot2
fstaff %>%
ggplot(aes(x = ..lag.., y = Hourly_Counts)) +
stat_acf(geom = "bar")