From e346e6ac58f2df3160186f67d6ff38e4c9ed9a06 Mon Sep 17 00:00:00 2001 From: Jzauner Date: Tue, 31 Oct 2023 11:44:41 +0100 Subject: [PATCH 1/4] slightly changed the behavior of gg_day so it accepts tidyverse behavior for the y-axis --- R/gg_day.r | 6 ++---- R/gg_days.R | 0 R/import_LL.R | 2 +- man/figures/README-unnamed-chunk-4-2 2.png | Bin 0 -> 142627 bytes man/import.Dataset.Rd | 8 ++++---- 5 files changed, 7 insertions(+), 9 deletions(-) create mode 100644 R/gg_days.R create mode 100644 man/figures/README-unnamed-chunk-4-2 2.png diff --git a/R/gg_day.r b/R/gg_day.r index 5e39692..2287856 100644 --- a/R/gg_day.r +++ b/R/gg_day.r @@ -109,17 +109,15 @@ gg_day <- function(dataset, # Initial Checks ---------------------------------------------------------- - x <- rlang::enexpr(x.axis) + x <- rlang::enexpr(x.axis) y <- rlang::enexpr(y.axis) - axis_columns <- (purrr::map_chr(c(x,y), rlang::as_string)) + axis_columns <- (purrr::map_chr(c(x,y), deparse1)) stopifnot( "The given dataset is not a dataframe" = is.data.frame(dataset), "The given column for X is not in the Dataset. If you did not specify X, you are working with data not originating from LightLogR. Please specify an appropriate Datetime column" = rlang::as_string(x) %in% names(dataset), "The given column for X is not a Datetime" = lubridate::is.POSIXct(dataset[[rlang::as_string(x)]]), - "The given column for Y is not in the Dataset" = - rlang::as_string(y) %in% names(dataset), "scales must be one of `fixed`, `free_x`, `free_y`, or `free`" = scales %in% c("free_y", "free_x", "fixed", "free"), "format.day must be a character. Please make shure it is of type `base::strptime`" = diff --git a/R/gg_days.R b/R/gg_days.R new file mode 100644 index 0000000..e69de29 diff --git a/R/import_LL.R b/R/import_LL.R index 28a1e8f..8fc309b 100644 --- a/R/import_LL.R +++ b/R/import_LL.R @@ -47,7 +47,7 @@ #' by the `device.ext` spec to access the sample file): #' * `"ActLumus"` (ActLumus.txt) #' * `"LYS"` (LYS.csv) -#' * `"Actiwatch_Spectrum"` (Actiwatch.csv) *Note: as the `locale` argument use `readr::locale(encoding="latin1")` . This is due to the fact that the German Actiwatch software from which this sample file was taken, uses a different encoding than UTF-8.* +#' * `"Actiwatch_Spectrum"` (Actiwatch.csv) **Special Argument: `column_names`** A character vector containing column names in the order in which they appear in the file. This is necessary to find the starting point of actual data.*Note: as the `locale` argument use `readr::locale(encoding="latin1")` . This is due to the fact that the German Actiwatch software from which this sample file was taken, uses a different encoding than UTF-8.* #' @importFrom rlang := #' @return Tibble/Dataframe with a POSIXct column for the datetime #' @export diff --git a/man/figures/README-unnamed-chunk-4-2 2.png b/man/figures/README-unnamed-chunk-4-2 2.png new file mode 100644 index 0000000000000000000000000000000000000000..d4b85dd005dae4ad53fdce72bb3a28bb03ffd3ff GIT binary patch literal 142627 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 MpWuHdRK8O+zgRBcF~ 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\preformatted{supported.devices -#> [1] "ActLumus" "LYS" +#> [1] "ActLumus" "LYS" "Actiwatch_Spectrum" }\if{html}{\out{}} To import a file, simple specify the filename (and path) and feed it to the @@ -131,7 +131,7 @@ dplyr::slice(1500:1505) \%>\% flextable::flextable() \%>\% flextable::autofit() }\if{html}{\out{}}\if{html}{\out{ -
}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}Datetime\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}TEMPERATURE\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}LIGHT\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}MEDI\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}Id\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}2023-07-14 13:04:18\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}29.88\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}21,847.64\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}20,660.74\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}sample_data_ActLumus\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}2023-07-14 13:05:18\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}29.88\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}22,033.77\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}20,834.91\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}sample_data_ActLumus\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}2023-07-14 13:06:18\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}29.81\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}21,769.50\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}20,600.82\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}sample_data_ActLumus\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}2023-07-14 13:07:18\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}29.69\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}21,177.20\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}20,061.68\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}sample_data_ActLumus\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}2023-07-14 13:08:18\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}29.44\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}20,738.98\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}19,662.14\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}sample_data_ActLumus\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}2023-07-14 13:09:18\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}29.31\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}20,255.17\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}19,203.94\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}sample_data_ActLumus\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{
}} +}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}Datetime\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}TEMPERATURE\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}LIGHT\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}MEDI\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}Id\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}2023-07-14 13:04:18\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}29.88\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}21,847.64\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}20,660.74\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}sample_data_ActLumus\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}2023-07-14 13:05:18\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}29.88\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}22,033.77\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}20,834.91\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}sample_data_ActLumus\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}2023-07-14 13:06:18\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}29.81\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}21,769.50\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}20,600.82\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}sample_data_ActLumus\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}2023-07-14 13:07:18\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}29.69\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}21,177.20\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}20,061.68\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}sample_data_ActLumus\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}2023-07-14 13:08:18\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}29.44\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}20,738.98\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}19,662.14\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}sample_data_ActLumus\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}2023-07-14 13:09:18\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}29.31\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}20,255.17\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}19,203.94\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}sample_data_ActLumus\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{}} } } From c2e0586aa79230dcdf32ec0820bb6c5d84a19544 Mon Sep 17 00:00:00 2001 From: Jzauner Date: Tue, 31 Oct 2023 15:29:56 +0100 Subject: [PATCH 2/4] Added the filter_Datetime_multiple() function. --- NAMESPACE | 1 + NEWS.md | 2 + R/filter_Datetime.R | 59 ++++++++++++++++++++- R/gg_day.r | 30 ++++++++--- man/figures/README-unnamed-chunk-4-2 2.png | Bin 142627 -> 0 bytes man/filter_Datetime.Rd | 3 ++ man/filter_Datetime_multiple.Rd | 40 ++++++++++++++ man/gg_day.Rd | 14 ++++- man/import.Dataset.Rd | 4 +- tests/testthat/test-filter_Datetime.R | 16 ++++++ 10 files changed, 158 insertions(+), 11 deletions(-) delete mode 100644 man/figures/README-unnamed-chunk-4-2 2.png create mode 100644 man/filter_Datetime_multiple.Rd diff --git a/NAMESPACE b/NAMESPACE index 2fa77d9..cf06e92 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -11,6 +11,7 @@ export(data2reference) export(dominant_epoch) export(filter_Date) export(filter_Datetime) +export(filter_Datetime_multiple) export(filter_Time) export(gap_finder) export(gap_handler) diff --git a/NEWS.md b/NEWS.md index 383ca0c..68f328d 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,7 @@ # LightLogR 0.2.1.9000 +* Added the `filter_Datetime_multiple()` function to filter for multiple Datetime ranges depending on certain conditions, e.g. different filter cutoffs for different participants. + * Reworked the internals of the light logger data import functions. They now use a more straightforward function factory approach. For users the only visible change it that device specific functions now have the form `import$device()` instead of the old `import.device()`. * Added the `symlog_trans()` function from a [post on stack overflow](https://stackoverflow.com/a/14674703). This function leads to a better visualization of light logger data, as a logarithmic transformation is necessary, but values of 0 are common. The function was integrated as a default for `gg_day()` and will likely be the basis of upcoming visualization functions. diff --git a/R/filter_Datetime.R b/R/filter_Datetime.R index 496dea6..f599803 100644 --- a/R/filter_Datetime.R +++ b/R/filter_Datetime.R @@ -32,6 +32,7 @@ #' is FALSE). This is useful, e.g., when the first observation in the dataset #' is slightly after midnight. If TRUE, it will count the length from midnight #' on to avoid empty days in plotting with [gg_day()]. +#' @param only_Id An expression of `ids` where the filtering should be applied to. If `NULL` (the default), the filtering will be applied to all `ids`. Based on the this expression, the dataset will be split in two and only where the given expression evaluates to `TRUE`, will the filtering take place. Afterwards both sets are recombined and sorted by `Datetime`. #' #' @return a `data.frame` object identical to `dataset` but with only the #' specified Dates/Times. @@ -86,12 +87,15 @@ filter_Datetime <- function(dataset, length = NULL, full.day = FALSE, tz = NULL, + only_Id = NULL, filter.expr = NULL) { # Initial Checks ---------------------------------------------------------- filter.expr <- rlang::enexpr(filter.expr) + only_Id <- rlang::enexpr(only_Id) + Datetime.colname.defused <- rlang::enexpr(Datetime.colname) %>% rlang::as_string() #timezone @@ -119,6 +123,16 @@ filter_Datetime <- function(dataset, # Manipulation ---------------------------------------------------------- + #split the dataset in two parts, based on the only_Id expression + if(!is.null(only_Id)) { + dataset_unfiltered <- + dataset %>% + dplyr::filter(!(!!only_Id), .preserve = TRUE) + dataset <- + dataset %>% + dplyr::filter(!!only_Id, .preserve = TRUE) + } + #calculate starting time if length and end are given if(is.null(start) & !is.null(length) & !is.null(end)) { start <- lubridate::as_datetime(end, tz = tz) - length @@ -155,7 +169,10 @@ filter_Datetime <- function(dataset, } # Return -------------------------------------------------------------- - dataset + if(!is.null(only_Id)) { + dplyr::bind_rows(dataset, dataset_unfiltered) %>% + dplyr::arrange({{ Datetime.colname }}, .by_group = TRUE) + } else dataset } @@ -184,4 +201,44 @@ filter_Date <- function(..., filter_Datetime(..., start = start, end = end) +} + +# multiple filter_Date ------------------------------------------------------------- + +#' Filter multiple times based on a list of arguments. +#' +#' [filter_Datetime_multiple()] is a wrapper around [filter_Datetime()] or +#' [filter_Date()] that allows the cumulative filtering of `Datetimes` based on +#' varying filter conditions. It is most useful in conjunction with the +#' `only_Id` argument, e.g., to selectively cut off dates depending on +#' participants (see examples) +#' +#' @param dataset A light logger dataset +#' @param arguments A list of arguments to be passed to [filter_Datetime()] or +#' [filter_Date()]. each list entry must itself be a list of arguments, e.g, +#' `list(start = "2021-01-01", only_Id = quote(Id == 216))`. Expressions have +#' to be quoted with [quote()] or [rlang::expr()]. +#' @param filter_function The function to be used for filtering, either +#' `filter_Datetime` (the default) or `filter_Date` +#' +#' @return A dataframe with the filtered data +#' @export +#' +#' @examples +#' arguments <- list( +#' list(start = "2023-08-17", only_Id = quote(Source == "Participant")), +#' list(end = "2023-08-17", only_Id = quote(Source == "Environment"))) +#' #compare the unfiltered dataset +#' sample.data.environment %>% gg_overview(Id.colname = Source) +#' #compare the unfiltered dataset +#' sample.data.environment %>% +#' filter_Datetime_multiple(arguments = arguments, filter_Date) %>% +#' gg_overview(Id.colname = Source) +filter_Datetime_multiple <- function(dataset, + arguments, + filter_function = filter_Datetime) { + + purrr::reduce(arguments, function(dataset, params) { + do.call({{ filter_function }}, c(list(dataset = dataset), params)) + }, .init = dataset) } \ No newline at end of file diff --git a/R/gg_day.r b/R/gg_day.r index 2287856..86f3d72 100644 --- a/R/gg_day.r +++ b/R/gg_day.r @@ -11,8 +11,12 @@ #' * `Time.data` is an `hms` created with [hms::as_hms()] that is used for the x.axis #' #' The default scaling of the y-axis is a `symlog` scale, which is a logarithmic -#' scale that only starts scaling after a given threshold (default = 0). This enables values of 0 in the plot, which are common in light logger data, and even enables negative values, which might be sensible for non-light data. See [symlog_trans()] for details on tweaking this scale. The scale can also be changed to a normal or logarithmic scale - see the y.scale argument for more. -#' +#' scale that only starts scaling after a given threshold (default = 0). This +#' enables values of 0 in the plot, which are common in light logger data, and +#' even enables negative values, which might be sensible for non-light data. See +#' [symlog_trans()] for details on tweaking this scale. The scale can also be +#' changed to a normal or logarithmic scale - see the y.scale argument for more. +#' #' @param dataset A light logger dataset. Expects a `dataframe`. If not imported #' by [LightLogR], take care to choose a sensible variable for the `x.axis.`. #' @param x.axis,y.axis column name that contains the datetime (x, defaults to @@ -36,8 +40,8 @@ #' earliest/latest date within the `dataset`. #' @param scales For [ggplot2::facet_wrap()], should scales be "fixed", "free" #' or free in one dimension ("free_y" is the default). Expects a `character`. -#' @param y.scale How should the y-axis be scaled? -#' * Defaults to `"symlog"`, which is a logarithmic scale that can also handle negative values. +#' @param y.scale How should the y-axis be scaled? +#' * Defaults to `"symlog"`, which is a logarithmic scale that can also handle negative values. #' * `"log10"` would be a straight logarithmic scale, but cannot handle negative values. #' * `"identity"` does nothing (continuous scaling). #' * a transforming function, such as [symlog_trans()] or [scales::identity_trans()], which allow for more control. @@ -62,7 +66,11 @@ #' used to adjust to adjust size or linetype. #' @param interactive Should the plot be interactive? Expects a `logical`. #' Defaults to `FALSE`. -#' @param facetting Should an automated facet by day be applie? Default is `TRUE` and uses the `Day.data` variable that the function also creates if not present. +#' @param facetting Should an automated facet by day be applie? Default is +#' `TRUE` and uses the `Day.data` variable that the function also creates if +#' not present. +#' @param jco_color Should the [ggsci::scale_color_jco()] color palette be used? +#' Defaults to `TRUE`. #' #' @return A ggplot object #' @export @@ -105,6 +113,7 @@ gg_day <- function(dataset, subtitle = NULL, interactive = FALSE, facetting = TRUE, + jco_color = TRUE, ...) { # Initial Checks ---------------------------------------------------------- @@ -145,6 +154,15 @@ gg_day <- function(dataset, } + #jco color palette + jco_color_scheme <- list() + if(jco_color) { + jco_color_scheme <- + list( + ggsci::scale_color_jco() + ) + } + #filter by start and end date if(!is.null(start.date)) { dataset <- @@ -192,7 +210,7 @@ gg_day <- function(dataset, ), ...) + ribbon + # Scales -------------------------------------------------------------- - ggsci::scale_color_jco()+ + jco_color_scheme+ ggplot2::scale_x_time(breaks = x.axis.breaks, labels = scales::label_time(format = "%H:%M")) + ggplot2::scale_y_continuous( diff --git a/man/figures/README-unnamed-chunk-4-2 2.png b/man/figures/README-unnamed-chunk-4-2 2.png deleted file mode 100644 index d4b85dd005dae4ad53fdce72bb3a28bb03ffd3ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 142627 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 MpWuHdRK8O+zgRBcF~ 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\% gg_overview(Id.colname = Source) + #compare the unfiltered dataset + sample.data.environment \%>\% + filter_Datetime_multiple(arguments = arguments, filter_Date) \%>\% + gg_overview(Id.colname = Source) +} diff --git a/man/gg_day.Rd b/man/gg_day.Rd index 3d73c88..5277966 100644 --- a/man/gg_day.Rd +++ b/man/gg_day.Rd @@ -25,6 +25,7 @@ gg_day( subtitle = NULL, interactive = FALSE, facetting = TRUE, + jco_color = TRUE, ... ) } @@ -95,7 +96,12 @@ at \code{\link[base:strptime]{base::strptime()}}} \item{interactive}{Should the plot be interactive? Expects a \code{logical}. Defaults to \code{FALSE}.} -\item{facetting}{Should an automated facet by day be applie? Default is \code{TRUE} and uses the \code{Day.data} variable that the function also creates if not present.} +\item{facetting}{Should an automated facet by day be applie? Default is +\code{TRUE} and uses the \code{Day.data} variable that the function also creates if +not present.} + +\item{jco_color}{Should the \code{\link[ggsci:scale_jco]{ggsci::scale_color_jco()}} color palette be used? +Defaults to \code{TRUE}.} \item{...}{Other options that get passed to the main geom function. Can be used to adjust to adjust size or linetype.} @@ -117,7 +123,11 @@ Besides plotting, the function creates two new variables from the given } The default scaling of the y-axis is a \code{symlog} scale, which is a logarithmic -scale that only starts scaling after a given threshold (default = 0). This enables values of 0 in the plot, which are common in light logger data, and even enables negative values, which might be sensible for non-light data. See \code{\link[=symlog_trans]{symlog_trans()}} for details on tweaking this scale. The scale can also be changed to a normal or logarithmic scale - see the y.scale argument for more. +scale that only starts scaling after a given threshold (default = 0). This +enables values of 0 in the plot, which are common in light logger data, and +even enables negative values, which might be sensible for non-light data. See +\code{\link[=symlog_trans]{symlog_trans()}} for details on tweaking this scale. The scale can also be +changed to a normal or logarithmic scale - see the y.scale argument for more. } \examples{ #use `col`for separation of different sets diff --git a/man/import.Dataset.Rd b/man/import.Dataset.Rd index 1294cdb..538dbb3 100644 --- a/man/import.Dataset.Rd +++ b/man/import.Dataset.Rd @@ -131,7 +131,7 @@ dplyr::slice(1500:1505) \%>\% flextable::flextable() \%>\% flextable::autofit() }\if{html}{\out{}}\if{html}{\out{ -
}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}Datetime\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}TEMPERATURE\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}LIGHT\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}MEDI\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}Id\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}2023-07-14 13:04:18\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}29.88\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}21,847.64\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}20,660.74\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}sample_data_ActLumus\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}2023-07-14 13:05:18\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}29.88\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}22,033.77\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}20,834.91\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}sample_data_ActLumus\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}2023-07-14 13:06:18\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}29.81\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}21,769.50\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}20,600.82\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}sample_data_ActLumus\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}2023-07-14 13:07:18\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}29.69\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}21,177.20\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}20,061.68\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}sample_data_ActLumus\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}2023-07-14 13:08:18\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}29.44\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}20,738.98\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}19,662.14\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}sample_data_ActLumus\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}2023-07-14 13:09:18\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}29.31\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}20,255.17\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}19,203.94\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}sample_data_ActLumus\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{
}} +}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}Datetime\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}TEMPERATURE\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}LIGHT\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}MEDI\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}Id\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}2023-07-14 13:04:18\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}29.88\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}21,847.64\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}20,660.74\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}sample_data_ActLumus\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}2023-07-14 13:05:18\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}29.88\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}22,033.77\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}20,834.91\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}sample_data_ActLumus\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}2023-07-14 13:06:18\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}29.81\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}21,769.50\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}20,600.82\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}sample_data_ActLumus\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}2023-07-14 13:07:18\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}29.69\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}21,177.20\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}20,061.68\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}sample_data_ActLumus\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}2023-07-14 13:08:18\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}29.44\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}20,738.98\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}19,662.14\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}sample_data_ActLumus\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}2023-07-14 13:09:18\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}29.31\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}20,255.17\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}19,203.94\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}sample_data_ActLumus\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{}} } } diff --git a/tests/testthat/test-filter_Datetime.R b/tests/testthat/test-filter_Datetime.R index 573b91d..a4ba1ab 100644 --- a/tests/testthat/test-filter_Datetime.R +++ b/tests/testthat/test-filter_Datetime.R @@ -57,3 +57,19 @@ test_that("giving wrong input types gives an error", { ) }) + +test_that("filter_multiple_Datetimes works as expected", { + arguments <- list( + list(start = "2023-08-17", only_Id = quote(Source == "Participant")), + list(end = "2023-08-17", only_Id = quote(Source == "Environment"))) + result <- + sample.data.environment %>% dplyr::group_by(Source) %>% + filter_Datetime_multiple(arguments = arguments, filter_Date) %>% + dplyr::summarize(max = max(Datetime), min = min(Datetime)) + expectation <- + tibble::tibble(Source = c("Environment", "Participant"), + max = as.POSIXct(c("2023-08-17 23:59:32", "2023-08-20 23:59:51"), tz = "UTC"), + min = as.POSIXct(c("2023-08-15 00:00:02", "2023-08-17 00:00:01"), tz = "UTC")) + expect_equal(result, expectation) +}) + \ No newline at end of file From 9ca9406a365fbe0a9600b3e1d4c3aacfe209148f Mon Sep 17 00:00:00 2001 From: Jzauner Date: Wed, 1 Nov 2023 21:32:31 +0100 Subject: [PATCH 3/4] added the gg_days function, Datetime_limits, and Datetime_breaks functions --- NAMESPACE | 3 + NEWS.md | 2 + R/gg_day.r | 19 +++-- R/gg_days.R | 179 +++++++++++++++++++++++++++++++++++++++++ R/visualize_helper.R | 81 +++++++++++++++++++ man/Datetime_breaks.Rd | 32 ++++++++ man/Datetime_limits.Rd | 42 ++++++++++ man/gg_day.Rd | 15 ++-- man/gg_days.Rd | 138 +++++++++++++++++++++++++++++++ man/import.Dataset.Rd | 4 +- 10 files changed, 498 insertions(+), 17 deletions(-) create mode 100644 R/visualize_helper.R create mode 100644 man/Datetime_breaks.Rd create mode 100644 man/Datetime_limits.Rd create mode 100644 man/gg_days.Rd diff --git a/NAMESPACE b/NAMESPACE index cf06e92..c9134cd 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -4,6 +4,8 @@ export("%>%") export(Brown.check) export(Brown.rec) export(Brown2reference) +export(Datetime_breaks) +export(Datetime_limits) export(aggregate_Datetime) export(create_Time.data) export(cut_Datetime) @@ -17,6 +19,7 @@ export(gap_finder) export(gap_handler) export(gapless_Datetimes) export(gg_day) +export(gg_days) export(gg_overview) export(import) export(import.Dataset) diff --git a/NEWS.md b/NEWS.md index 68f328d..e12038f 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,7 @@ # LightLogR 0.2.1.9000 +* Added the `gg_days()` function to visualize multiple days of data in a single plot. Alongside come two helper functions, `Datetime_limits()` and `Datetime_breaks()`, to set the limits and breaks of the x-axis. + * Added the `filter_Datetime_multiple()` function to filter for multiple Datetime ranges depending on certain conditions, e.g. different filter cutoffs for different participants. * Reworked the internals of the light logger data import functions. They now use a more straightforward function factory approach. For users the only visible change it that device specific functions now have the form `import$device()` instead of the old `import.device()`. diff --git a/R/gg_day.r b/R/gg_day.r index 86f3d72..4c4d365 100644 --- a/R/gg_day.r +++ b/R/gg_day.r @@ -1,7 +1,7 @@ -#' Create a simple plot of light logger data, facetted by Day +#' Create a simple Time-of-Day plot of light logger data, faceted by Date #' -#' `gg_day` will create a simple ggplot for every data in a dataset. The result +#' [gg_day()] will create a simple ggplot for every data in a dataset. The result #' can further be manipulated like any ggplot. This will be sensible to refine #' styling or guides. #' @@ -35,7 +35,7 @@ #' @param start.date,end.date Choose an optional start or end date within your #' `dataset`. Expects a `date`, which can also be a `character` that is #' interpretable as a date, e.g., `"2023-06-03"`. If you need a Datetime or -#' want to cut specific times of each day, use the [filter_Datetime] function. +#' want to cut specific times of each day, use the [filter_Datetime()] function. #' Defaults to `NULL`, which means that the plot starts/ends with the #' earliest/latest date within the `dataset`. #' @param scales For [ggplot2::facet_wrap()], should scales be "fixed", "free" @@ -56,17 +56,18 @@ #' @param y.scale.sc `logical` for whether scientific notation shall be used. #' Defaults to `FALSE`. #' @param geom What geom should be used for visualization? Expects a `character` -#' * `"point"` for [ggplot2::geom_point()] (the default) +#' * `"point"` for [ggplot2::geom_point()] #' * `"line"` for [ggplot2::geom_line()] -#' * as the value is just input into the `geom_` function from [ggplot2], other variants might work as well, but are not tested. +#' * `"ribbon"` for [ggplot2::geom_ribbon()] +#' * as the value is just input into the `geom_` function from [ggplot2], other variants work as well, but are not extensively tested. #' @param group Optional column name that defines separate sets. Useful for #' certain geoms like `boxplot`.Expects anything that works with the layer #' data [ggplot2::aes()] #' @param ... Other options that get passed to the main geom function. Can be -#' used to adjust to adjust size or linetype. +#' used to adjust to adjust size, linewidth, or linetype. #' @param interactive Should the plot be interactive? Expects a `logical`. #' Defaults to `FALSE`. -#' @param facetting Should an automated facet by day be applie? Default is +#' @param facetting Should an automated facet by day be applied? Default is #' `TRUE` and uses the `Day.data` variable that the function also creates if #' not present. #' @param jco_color Should the [ggsci::scale_color_jco()] color palette be used? @@ -146,7 +147,9 @@ gg_day <- function(dataset, ribbon <- list( ggplot2::geom_ribbon( - ggplot2::aes(ymin = 0, ymax = !!y), + ggplot2::aes(ymin = 0, ymax = !!y, + group = {{ group }}, + col = {{ col }}), outline.type = "upper", ... ) diff --git a/R/gg_days.R b/R/gg_days.R index e69de29..6251e3c 100644 --- a/R/gg_days.R +++ b/R/gg_days.R @@ -0,0 +1,179 @@ +#' Create a simple datetime plot of light logger data, faceted by group +#' +#' [gg_days()] will create a simple ggplot along the timeline. The result can +#' further be manipulated like any ggplot. This will be sensible to refine +#' styling or guides. Through the `x.axis.limits` arguments, the plot can be +#' much refined to align several groups of differing datetime ranges. It uses +#' the [Datetime_limits()] function to calculate the limits of the x-axis. +#' Another notable functions that are used are [Datetime_breaks()] to calculate +#' the breaks of the x-axis. +#' +#' The default scaling of the y-axis is a `symlog` scale, which is a logarithmic +#' scale that only starts scaling after a given threshold (default = 0). This +#' enables values of 0 in the plot, which are common in light logger data, and +#' even enables negative values, which might be sensible for non-light data. See +#' [symlog_trans()] for details on tweaking this scale. The scale can also be +#' changed to a normal or logarithmic scale - see the y.scale argument for more. +#' @inheritParams gg_day +#' @param aes_col,aes_fill optional input that defines separate sets and colors +#' or fills them. Expects anything that works with the layer data +#' [ggplot2::aes()]. +#' @param y.axis.breaks Where should breaks occur on the y.axis? Expects a +#' `numeric vector` with all the breaks or a function that calculates them +#' based on the limits. If you want to activate the default behaviour of +#' [ggplot2], you need to put in [ggplot2::waiver()]. +#' @param x.axis.breaks The (major) breaks of the x-axis. Defaults to +#' [Datetime_breaks()]. The function has several options for adjustment. The +#' default setting place a major break every 12 hours, starting at 12:00 of +#' the first day. +#' @param x.axis.limits The limits of the x-axis. Defaults to +#' [Datetime_limits()]. Can and should be adjusted to shift the x-axis to +#' align different groups of data. +#' @param x.axis.format The format of the x-axis labels. Defaults to `"%a %D"`, +#' which is the weekday and date. See [base::strptime()] for more options. +#' @param facetting Should an automated facet by grouping be applied? Default is +#' `TRUE`. +#' +#' @return A ggplot object +#' @export +#' +#' @examples +#' dataset <- +#' sample.data.environment %>% +#' dplyr::group_by(Source) %>% +#' aggregate_Datetime(unit = "5 mins") +#' +#' dataset %>% gg_days(y.axis = `MELANOPIC EDI`) +#' #restrict the x-axis to 3 days +#' dataset %>% +#' gg_days( +#' y.axis = `MELANOPIC EDI`, +#' x.axis.limits = \(x) Datetime_limits(x, length = lubridate::ddays(3)) +#' ) +gg_days <- function(dataset, + x.axis = Datetime, + y.axis = MEDI, + aes_col = NULL, + aes_fill = NULL, + group = NULL, + geom = "line", + scales = "free_x", + x.axis.breaks = Datetime_breaks, + y.axis.breaks = c(-10^(5:0), 0, 10^(0:5)), + y.scale = "symlog", + y.scale.sc = FALSE, + x.axis.label = "Datetime", + y.axis.label = "Illuminance (lx, MEDI)", + x.axis.limits = Datetime_limits, + x.axis.format = "%a %D", + title = NULL, + subtitle = NULL, + interactive = FALSE, + facetting = TRUE, + ...) { + + # Initial Checks ---------------------------------------------------------- + + x <- rlang::enexpr(x.axis) + y <- rlang::enexpr(y.axis) + axis_columns <- (purrr::map_chr(c(x,y), deparse1)) + stopifnot( + "The given dataset is not a dataframe" = is.data.frame(dataset), + "The given column for X is not in the Dataset. If you did not specify X, you are working with data not originating from LightLogR. Please specify an appropriate Datetime column" = + rlang::as_string(x) %in% names(dataset), + "The given column for X is not a Datetime" = + lubridate::is.POSIXct(dataset[[rlang::as_string(x)]]), + "scales must be one of `fixed`, `free_x`, `free_y`, or `free`" = + scales %in% c("free_y", "free_x", "fixed", "free"), + "The X axis label must be a string" = is.character(x.axis.label), + "The Y axis label must be a string" = is.character(y.axis.label), + "interactive must be a logical" = is.logical(interactive) + ) + + # Data Preparation -------------------------------------------------------- + + #special case for geom = "ribbon" + ribbon <- list() + if(geom == "ribbon") { + geom <- "blank" + ribbon <- + rlang::inject(list( + ggplot2::geom_ribbon( + ggplot2::aes( + ymin = 0, ymax = !!y, + group = {{ group }}, + fill = {{ aes_fill }}, + col = {{ aes_col }} + ), + outline.type = "upper", + ... + ) + )) + + } + + #grouping_vars + grouping_var <- dplyr::group_vars(dataset) + + #give the user the chance to use whatever geom they want + geom_function_expr <- rlang::parse_expr(paste0("ggplot2::geom_", geom)) + + # Plot Creation ----------------------------------------------------------- + + Plot <- + dataset %>% + #basic setup + ggplot2::ggplot(ggplot2::aes(x=!!x, y = !!y)) + + eval(geom_function_expr)( + ggplot2::aes( + group = {{ group }}, + fill = {{ aes_fill }}, + col = {{ aes_col }}, + ), ...) + + ribbon + + # Scales -------------------------------------------------------------- + ggplot2::scale_y_continuous( + trans = y.scale, + breaks = y.axis.breaks, + labels = function(x) format(x, scientific = y.scale.sc, big.mark = " ") + )+ + ggplot2::scale_x_datetime( + breaks = x.axis.breaks, + date_minor_breaks = "24 hours", + date_labels = x.axis.format, + limits = x.axis.limits, + expand = c(0,0) + )+ + # Styling -------------------------------------------------------------- + ggplot2::labs( + y= y.axis.label, + x= x.axis.label, + title = title, + subtitle = subtitle + )+ + cowplot::theme_cowplot()+ + ggplot2::theme( + plot.title.position = "plot", + panel.grid.major.y = ggplot2::element_line("grey98"), + panel.grid.major.x = + ggplot2::element_line(color = "grey80", linetype = 2, linewidth = 0.25), + panel.grid.minor.x = + ggplot2::element_line(color = "grey80", linewidth = 0.25), + strip.text.y = ggplot2::element_text(face = "bold",), + strip.placement = "outside" + ) + + # Facetting ------------------------------------------------------------ + if(facetting) { + ggplot2::facet_wrap( + grouping_var, + ncol=1, + scales = scales, + strip.position = "left") + } + + # Return -------------------------------------------------------------- + if(interactive) { + Plot %>% plotly::ggplotly() + } + else Plot +} diff --git a/R/visualize_helper.R b/R/visualize_helper.R new file mode 100644 index 0000000..5cd4bff --- /dev/null +++ b/R/visualize_helper.R @@ -0,0 +1,81 @@ +#' Create a (shifted) sequence of Datetimes for axis breaks +#' +#' Take a vector of Datetimes and create a sequence of Datetimes with a given +#' shift and interval. This is a helper function to create breaks for plotting, +#' e.g. in [gg_days()], and is best used in conjunction with +#' [Datetime_limits()]. The function is a thin wrapper around [seq()]. +#' +#' @param x a vector of `Datetimes` +#' @param shift a `numeric` giving the number of `duration` object, e.g. +#' `lubridate::duration(12, "hours")` +#' @param by a `character` scalar giving the unit of the interval in +#' [base::seq()] +#' +#' @return a `vector` of `Datetimes` +#' @export +#' +#' @examples +#' dataset <- c("2023-08-15", "2023-08-20") +#' Datetime_breaks(dataset) +#' Datetime_breaks(dataset, shift = 0) +#' Datetime_breaks(dataset, by = "12 hours") + +Datetime_breaks <- function(x, + shift = lubridate::duration(12, "hours"), + by = "1 day") { + x <- lubridate::as_datetime(x) + (min(x) + shift) %>% + seq(max(x), by = by) +} + +#' Find or set sensible limits for Datetime axis +#' +#' Take a vector of `Datetimes` and return the start of the first and end of the +#' last day of data. The `start` and the `length` can be adjusted by +#' `durations`, like [lubridate::ddays()]. It is used in the [gg_days()] +#' function to return a sensible axis. This function is a thin wrapper around +#' [lubridate::floor_date()] and [lubridate::ceiling_date()]. +#' +#' @param x a vector of `Datetimes` +#' @param start optional `duration` object, e.g. `lubridate::ddays(1)` that +#' shifts the start of the `Datetime` vector by this amount. +#' @param length optional `duration` object, e.g. `lubridate::ddays(7)` that +#' shifts the end of the `Datetime` vector by this amount from the (adjusted) +#' start. +#' @param unit a `character` scalar giving the unit of rounding in +#' [lubridate::floor_date()] and [lubridate::ceiling_date()] +#' @param ... other arguments passed to [lubridate::floor_date()] and +#' [lubridate::ceiling_date()] +#' +#' @return a 2 item `vector` of `Datetimes` with the (adjusted) start and end of +#' the input vector. +#' @export +#' +#' @examples +#' dataset <- c("2023-08-15", "2023-08-20") +#' breaks <- Datetime_breaks(dataset) +#' Datetime_limits(breaks) +#' Datetime_limits(breaks, start = lubridate::ddays(1)) +#' Datetime_limits(breaks, length = lubridate::ddays(2)) +Datetime_limits <- function(x, + start = NULL, + length = NULL, + unit = "1 day", + ...) { + + min_date <- x %>% lubridate::as_datetime() %>% min() + if(!is.null(start)) { + min_date <- (min_date + start) + min_date %>% lubridate::as_datetime() + } + max_date <- + if(is.null(length)) { + x %>% lubridate::as_datetime() %>% max() + } else { + y <- (min_date + length) + y %>% lubridate::as_datetime() + } + + c(lubridate::floor_date(min_date, unit = unit, ...), + lubridate::ceiling_date(max_date, unit = unit, ...)) +} \ No newline at end of file diff --git a/man/Datetime_breaks.Rd b/man/Datetime_breaks.Rd new file mode 100644 index 0000000..62c1ccb --- /dev/null +++ b/man/Datetime_breaks.Rd @@ -0,0 +1,32 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/visualize_helper.R +\name{Datetime_breaks} +\alias{Datetime_breaks} +\title{Create a (shifted) sequence of Datetimes for axis breaks} +\usage{ +Datetime_breaks(x, shift = lubridate::duration(12, "hours"), by = "1 day") +} +\arguments{ +\item{x}{a vector of \code{Datetimes}} + +\item{shift}{a \code{numeric} giving the number of \code{duration} object, e.g. +\code{lubridate::duration(12, "hours")}} + +\item{by}{a \code{character} scalar giving the unit of the interval in +\code{\link[base:seq]{base::seq()}}} +} +\value{ +a \code{vector} of \code{Datetimes} +} +\description{ +Take a vector of Datetimes and create a sequence of Datetimes with a given +shift and interval. This is a helper function to create breaks for plotting, +e.g. in \code{\link[=gg_days]{gg_days()}}, and is best used in conjunction with +\code{\link[=Datetime_limits]{Datetime_limits()}}. The function is a thin wrapper around \code{\link[=seq]{seq()}}. +} +\examples{ +dataset <- c("2023-08-15", "2023-08-20") +Datetime_breaks(dataset) +Datetime_breaks(dataset, shift = 0) +Datetime_breaks(dataset, by = "12 hours") +} diff --git a/man/Datetime_limits.Rd b/man/Datetime_limits.Rd new file mode 100644 index 0000000..d89d8fb --- /dev/null +++ b/man/Datetime_limits.Rd @@ -0,0 +1,42 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/visualize_helper.R +\name{Datetime_limits} +\alias{Datetime_limits} +\title{Find or set sensible limits for Datetime axis} +\usage{ +Datetime_limits(x, start = NULL, length = NULL, unit = "1 day", ...) +} +\arguments{ +\item{x}{a vector of \code{Datetimes}} + +\item{start}{optional \code{duration} object, e.g. \code{lubridate::ddays(1)} that +shifts the start of the \code{Datetime} vector by this amount.} + +\item{length}{optional \code{duration} object, e.g. \code{lubridate::ddays(7)} that +shifts the end of the \code{Datetime} vector by this amount from the (adjusted) +start.} + +\item{unit}{a \code{character} scalar giving the unit of rounding in +\code{\link[lubridate:round_date]{lubridate::floor_date()}} and \code{\link[lubridate:round_date]{lubridate::ceiling_date()}}} + +\item{...}{other arguments passed to \code{\link[lubridate:round_date]{lubridate::floor_date()}} and +\code{\link[lubridate:round_date]{lubridate::ceiling_date()}}} +} +\value{ +a 2 item \code{vector} of \code{Datetimes} with the (adjusted) start and end of +the input vector. +} +\description{ +Take a vector of \code{Datetimes} and return the start of the first and end of the +last day of data. The \code{start} and the \code{length} can be adjusted by +\code{durations}, like \code{\link[lubridate:duration]{lubridate::ddays()}}. It is used in the \code{\link[=gg_days]{gg_days()}} +function to return a sensible axis. This function is a thin wrapper around +\code{\link[lubridate:round_date]{lubridate::floor_date()}} and \code{\link[lubridate:round_date]{lubridate::ceiling_date()}}. +} +\examples{ +dataset <- c("2023-08-15", "2023-08-20") +breaks <- Datetime_breaks(dataset) +Datetime_limits(breaks) +Datetime_limits(breaks, start = lubridate::ddays(1)) +Datetime_limits(breaks, length = lubridate::ddays(2)) +} diff --git a/man/gg_day.Rd b/man/gg_day.Rd index 5277966..10f5066 100644 --- a/man/gg_day.Rd +++ b/man/gg_day.Rd @@ -2,7 +2,7 @@ % Please edit documentation in R/gg_day.r \name{gg_day} \alias{gg_day} -\title{Create a simple plot of light logger data, facetted by Day} +\title{Create a simple Time-of-Day plot of light logger data, faceted by Date} \usage{ gg_day( dataset, @@ -36,7 +36,7 @@ by \link{LightLogR}, take care to choose a sensible variable for the \code{x.axi \item{start.date, end.date}{Choose an optional start or end date within your \code{dataset}. Expects a \code{date}, which can also be a \code{character} that is interpretable as a date, e.g., \code{"2023-06-03"}. If you need a Datetime or -want to cut specific times of each day, use the \link{filter_Datetime} function. +want to cut specific times of each day, use the \code{\link[=filter_Datetime]{filter_Datetime()}} function. Defaults to \code{NULL}, which means that the plot starts/ends with the earliest/latest date within the \code{dataset}.} @@ -58,9 +58,10 @@ data \code{\link[ggplot2:aes]{ggplot2::aes()}}} \item{geom}{What geom should be used for visualization? Expects a \code{character} \itemize{ -\item \code{"point"} for \code{\link[ggplot2:geom_point]{ggplot2::geom_point()}} (the default) +\item \code{"point"} for \code{\link[ggplot2:geom_point]{ggplot2::geom_point()}} \item \code{"line"} for \code{\link[ggplot2:geom_path]{ggplot2::geom_line()}} -\item as the value is just input into the \code{geom_} function from \link{ggplot2}, other variants might work as well, but are not tested. +\item \code{"ribbon"} for \code{\link[ggplot2:geom_ribbon]{ggplot2::geom_ribbon()}} +\item as the value is just input into the \code{geom_} function from \link{ggplot2}, other variants work as well, but are not extensively tested. }} \item{scales}{For \code{\link[ggplot2:facet_wrap]{ggplot2::facet_wrap()}}, should scales be "fixed", "free" @@ -96,7 +97,7 @@ at \code{\link[base:strptime]{base::strptime()}}} \item{interactive}{Should the plot be interactive? Expects a \code{logical}. Defaults to \code{FALSE}.} -\item{facetting}{Should an automated facet by day be applie? Default is +\item{facetting}{Should an automated facet by day be applied? Default is \code{TRUE} and uses the \code{Day.data} variable that the function also creates if not present.} @@ -104,13 +105,13 @@ not present.} Defaults to \code{TRUE}.} \item{...}{Other options that get passed to the main geom function. Can be -used to adjust to adjust size or linetype.} +used to adjust to adjust size, linewidth, or linetype.} } \value{ A ggplot object } \description{ -\code{gg_day} will create a simple ggplot for every data in a dataset. The result +\code{\link[=gg_day]{gg_day()}} will create a simple ggplot for every data in a dataset. The result can further be manipulated like any ggplot. This will be sensible to refine styling or guides. } diff --git a/man/gg_days.Rd b/man/gg_days.Rd new file mode 100644 index 0000000..9c5fa10 --- /dev/null +++ b/man/gg_days.Rd @@ -0,0 +1,138 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/gg_days.R +\name{gg_days} +\alias{gg_days} +\title{Create a simple datetime plot of light logger data, faceted by group} +\usage{ +gg_days( + dataset, + x.axis = Datetime, + y.axis = MEDI, + aes_col = NULL, + aes_fill = NULL, + group = NULL, + geom = "line", + scales = "free_x", + x.axis.breaks = Datetime_breaks, + y.axis.breaks = c(-10^(5:0), 0, 10^(0:5)), + y.scale = "symlog", + y.scale.sc = FALSE, + x.axis.label = "Datetime", + y.axis.label = "Illuminance (lx, MEDI)", + x.axis.limits = Datetime_limits, + x.axis.format = "\%a \%D", + title = NULL, + subtitle = NULL, + interactive = FALSE, + facetting = TRUE, + ... +) +} +\arguments{ +\item{dataset}{A light logger dataset. Expects a \code{dataframe}. If not imported +by \link{LightLogR}, take care to choose a sensible variable for the \code{x.axis.}.} + +\item{x.axis, y.axis}{column name that contains the datetime (x, defaults to +\code{"Datetime"} which is automatically correct for data imported with +\link{LightLogR}) and the dependent variable (y, defaults to \code{"MEDI"}, or +melanopic EDI, which is a standard measure of stimulus strength for the +nonvisual effects of light). Expects a \code{symbol}. Needs to be part of the +\code{dataset}.} + +\item{aes_col, aes_fill}{optional input that defines separate sets and colors +or fills them. Expects anything that works with the layer data +\code{\link[ggplot2:aes]{ggplot2::aes()}}.} + +\item{group}{Optional column name that defines separate sets. Useful for +certain geoms like \code{boxplot}.Expects anything that works with the layer +data \code{\link[ggplot2:aes]{ggplot2::aes()}}} + +\item{geom}{What geom should be used for visualization? Expects a \code{character} +\itemize{ +\item \code{"point"} for \code{\link[ggplot2:geom_point]{ggplot2::geom_point()}} +\item \code{"line"} for \code{\link[ggplot2:geom_path]{ggplot2::geom_line()}} +\item \code{"ribbon"} for \code{\link[ggplot2:geom_ribbon]{ggplot2::geom_ribbon()}} +\item as the value is just input into the \code{geom_} function from \link{ggplot2}, other variants work as well, but are not extensively tested. +}} + +\item{scales}{For \code{\link[ggplot2:facet_wrap]{ggplot2::facet_wrap()}}, should scales be "fixed", "free" +or free in one dimension ("free_y" is the default). Expects a \code{character}.} + +\item{x.axis.breaks}{The (major) breaks of the x-axis. Defaults to +\code{\link[=Datetime_breaks]{Datetime_breaks()}}. The function has several options for adjustment. The +default setting place a major break every 12 hours, starting at 12:00 of +the first day.} + +\item{y.axis.breaks}{Where should breaks occur on the y.axis? Expects a +\verb{numeric vector} with all the breaks or a function that calculates them +based on the limits. If you want to activate the default behaviour of +\link{ggplot2}, you need to put in \code{\link[ggplot2:waiver]{ggplot2::waiver()}}.} + +\item{y.scale}{How should the y-axis be scaled? +\itemize{ +\item Defaults to \code{"symlog"}, which is a logarithmic scale that can also handle negative values. +\item \code{"log10"} would be a straight logarithmic scale, but cannot handle negative values. +\item \code{"identity"} does nothing (continuous scaling). +\item a transforming function, such as \code{\link[=symlog_trans]{symlog_trans()}} or \code{\link[scales:identity_trans]{scales::identity_trans()}}, which allow for more control. +}} + +\item{y.scale.sc}{\code{logical} for whether scientific notation shall be used. +Defaults to \code{FALSE}.} + +\item{x.axis.label, y.axis.label}{labels for the x- and y-axis. Expects a +\code{character}.} + +\item{x.axis.limits}{The limits of the x-axis. Defaults to +\code{\link[=Datetime_limits]{Datetime_limits()}}. Can and should be adjusted to shift the x-axis to +align different groups of data.} + +\item{x.axis.format}{The format of the x-axis labels. Defaults to \code{"\%a \%D"}, +which is the weekday and date. See \code{\link[base:strptime]{base::strptime()}} for more options.} + +\item{title}{Plot title. Expects a \code{character}.} + +\item{subtitle}{Plot subtitle. Expects a \code{character}.} + +\item{interactive}{Should the plot be interactive? Expects a \code{logical}. +Defaults to \code{FALSE}.} + +\item{facetting}{Should an automated facet by grouping be applied? Default is +\code{TRUE}.} + +\item{...}{Other options that get passed to the main geom function. Can be +used to adjust to adjust size, linewidth, or linetype.} +} +\value{ +A ggplot object +} +\description{ +\code{\link[=gg_days]{gg_days()}} will create a simple ggplot along the timeline. The result can +further be manipulated like any ggplot. This will be sensible to refine +styling or guides. Through the \code{x.axis.limits} arguments, the plot can be +much refined to align several groups of differing datetime ranges. It uses +the \code{\link[=Datetime_limits]{Datetime_limits()}} function to calculate the limits of the x-axis. +Another notable functions that are used are \code{\link[=Datetime_breaks]{Datetime_breaks()}} to calculate +the breaks of the x-axis. +} +\details{ +The default scaling of the y-axis is a \code{symlog} scale, which is a logarithmic +scale that only starts scaling after a given threshold (default = 0). This +enables values of 0 in the plot, which are common in light logger data, and +even enables negative values, which might be sensible for non-light data. See +\code{\link[=symlog_trans]{symlog_trans()}} for details on tweaking this scale. The scale can also be +changed to a normal or logarithmic scale - see the y.scale argument for more. +} +\examples{ +dataset <- +sample.data.environment \%>\% +dplyr::group_by(Source) \%>\% +aggregate_Datetime(unit = "5 mins") + +dataset \%>\% gg_days(y.axis = `MELANOPIC EDI`) +#restrict the x-axis to 3 days +dataset \%>\% +gg_days( +y.axis = `MELANOPIC EDI`, +x.axis.limits = \(x) Datetime_limits(x, length = lubridate::ddays(3)) +) +} diff --git a/man/import.Dataset.Rd b/man/import.Dataset.Rd index 538dbb3..033dd88 100644 --- a/man/import.Dataset.Rd +++ b/man/import.Dataset.Rd @@ -131,7 +131,7 @@ dplyr::slice(1500:1505) \%>\% flextable::flextable() \%>\% flextable::autofit() }\if{html}{\out{}}\if{html}{\out{ -
}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}Datetime\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}TEMPERATURE\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}LIGHT\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}MEDI\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}Id\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}2023-07-14 13:04:18\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}29.88\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}21,847.64\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}20,660.74\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}sample_data_ActLumus\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}2023-07-14 13:05:18\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}29.88\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}22,033.77\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}20,834.91\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}sample_data_ActLumus\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}2023-07-14 13:06:18\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}29.81\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}21,769.50\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}20,600.82\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}sample_data_ActLumus\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}2023-07-14 13:07:18\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}29.69\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}21,177.20\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}20,061.68\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}sample_data_ActLumus\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}2023-07-14 13:08:18\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}29.44\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}20,738.98\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}19,662.14\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}sample_data_ActLumus\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}2023-07-14 13:09:18\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}29.31\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}20,255.17\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}19,203.94\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}sample_data_ActLumus\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{
}} +}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}Datetime\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}TEMPERATURE\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}LIGHT\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}MEDI\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}Id\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}2023-07-14 13:04:18\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}29.88\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}21,847.64\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}20,660.74\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}sample_data_ActLumus\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}2023-07-14 13:05:18\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}29.88\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}22,033.77\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}20,834.91\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}sample_data_ActLumus\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}2023-07-14 13:06:18\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}29.81\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}21,769.50\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}20,600.82\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}sample_data_ActLumus\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}2023-07-14 13:07:18\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}29.69\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}21,177.20\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}20,061.68\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}sample_data_ActLumus\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}2023-07-14 13:08:18\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}29.44\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}20,738.98\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}19,662.14\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}sample_data_ActLumus\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}2023-07-14 13:09:18\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}29.31\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}20,255.17\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}19,203.94\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}sample_data_ActLumus\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{}} } } From 4aaec9925762ef848cbb6a9896a473671a4a17b7 Mon Sep 17 00:00:00 2001 From: Jzauner Date: Thu, 2 Nov 2023 08:41:48 +0100 Subject: [PATCH 4/4] Added tests to the new functions --- NAMESPACE | 1 + NEWS.md | 4 ++- R/aaa.r | 2 +- R/gg_day.r | 31 +++++++++++--------- R/gg_overview.R | 1 + R/helper.R | 26 +++++++++++++++-- R/import_LL.R | 3 +- R/symlog_trans.R | 6 ++-- README.Rmd | 6 ++-- README.md | 6 ++-- _pkgdown.yml | 27 ++++++++++++++---- man/count.difftime.Rd | 39 ++++++++++++++++++++++++++ man/gg_day.Rd | 25 +++++++++-------- man/import.Dataset.Rd | 4 +-- man/symlog_trans.Rd | 6 ++-- tests/testthat/test-helper.R | 9 ++++++ tests/testthat/test-visualize_helper.R | 28 ++++++++++++++++++ 17 files changed, 174 insertions(+), 50 deletions(-) create mode 100644 man/count.difftime.Rd create mode 100644 tests/testthat/test-helper.R create mode 100644 tests/testthat/test-visualize_helper.R diff --git a/NAMESPACE b/NAMESPACE index c9134cd..d3bd17c 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -7,6 +7,7 @@ export(Brown2reference) export(Datetime_breaks) export(Datetime_limits) export(aggregate_Datetime) +export(count.difftime) export(create_Time.data) export(cut_Datetime) export(data2reference) diff --git a/NEWS.md b/NEWS.md index e12038f..71ea700 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,8 +1,10 @@ # LightLogR 0.2.1.9000 +* Exports the up to now internal function `count.difftime()` that is the basis for `dominant_epoch()`. But whereas the latter gets only the most common epoch, `count.difftime()` returns a table with the counts of all epochs. This is useful in conjunction with `gap_finder()`, to check the distribution of data intervals. + * Added the `gg_days()` function to visualize multiple days of data in a single plot. Alongside come two helper functions, `Datetime_limits()` and `Datetime_breaks()`, to set the limits and breaks of the x-axis. -* Added the `filter_Datetime_multiple()` function to filter for multiple Datetime ranges depending on certain conditions, e.g. different filter cutoffs for different participants. +* Added the `filter_Datetime_multiple()` function to filter for multiple Datetime ranges depending on certain conditions, e.g. different filter cutoffs for different participants. It wraps around `filter_Datetime()` or `filter_Date()`. * Reworked the internals of the light logger data import functions. They now use a more straightforward function factory approach. For users the only visible change it that device specific functions now have the form `import$device()` instead of the old `import.device()`. diff --git a/R/aaa.r b/R/aaa.r index 14e55c2..e5f6add 100644 --- a/R/aaa.r +++ b/R/aaa.r @@ -1,4 +1,4 @@ -Time <- mEDI <- Time.data <- Datetime <- timestamp <- tz <- Day.data <- `DATE/TIME` <- n <- Datetime.rounded <- id <- sleep.colname.string <- file.name <- Interval <- original.datapoints.fleeting <- MEDI <- State.Brown <- Reference <- Reference.check <- Id <- Start.date.shift <- data <- Shift <- `MELANOPIC EDI` <- State <- group <- End <- Start <- Quant.x <- Quant.y <- is.implicit <- group.indices <- Id2 <- gap.id <- start <- end <- path <- auto.id <- n_max <- manual.id <- NULL +Time <- mEDI <- Time.data <- Datetime <- timestamp <- tz <- Day.data <- `DATE/TIME` <- n <- Datetime.rounded <- id <- sleep.colname.string <- file.name <- Interval <- original.datapoints.fleeting <- MEDI <- State.Brown <- Reference <- Reference.check <- Id <- Start.date.shift <- data <- Shift <- `MELANOPIC EDI` <- State <- group <- End <- Start <- Quant.x <- Quant.y <- is.implicit <- group.indices <- Id2 <- gap.id <- start <- end <- path <- auto.id <- n_max <- manual.id <- silent <- NULL empty_function <- function() { rsconnect::accountInfo() diff --git a/R/gg_day.r b/R/gg_day.r index 4c4d365..29fe019 100644 --- a/R/gg_day.r +++ b/R/gg_day.r @@ -1,9 +1,9 @@ #' Create a simple Time-of-Day plot of light logger data, faceted by Date #' -#' [gg_day()] will create a simple ggplot for every data in a dataset. The result -#' can further be manipulated like any ggplot. This will be sensible to refine -#' styling or guides. +#' [gg_day()] will create a simple ggplot for every data in a dataset. The +#' result can further be manipulated like any ggplot. This will be sensible to +#' refine styling or guides. #' #' Besides plotting, the function creates two new variables from the given #' `Datetime`: @@ -35,9 +35,9 @@ #' @param start.date,end.date Choose an optional start or end date within your #' `dataset`. Expects a `date`, which can also be a `character` that is #' interpretable as a date, e.g., `"2023-06-03"`. If you need a Datetime or -#' want to cut specific times of each day, use the [filter_Datetime()] function. -#' Defaults to `NULL`, which means that the plot starts/ends with the -#' earliest/latest date within the `dataset`. +#' want to cut specific times of each day, use the [filter_Datetime()] +#' function. Defaults to `NULL`, which means that the plot starts/ends with +#' the earliest/latest date within the `dataset`. #' @param scales For [ggplot2::facet_wrap()], should scales be "fixed", "free" #' or free in one dimension ("free_y" is the default). Expects a `character`. #' @param y.scale How should the y-axis be scaled? @@ -45,10 +45,10 @@ #' * `"log10"` would be a straight logarithmic scale, but cannot handle negative values. #' * `"identity"` does nothing (continuous scaling). #' * a transforming function, such as [symlog_trans()] or [scales::identity_trans()], which allow for more control. -#' @param col optional column name that defines separate sets and colors them. -#' Expects anything that works with the layer data [ggplot2::aes()]. The -#' default color palette can be overwritten outside the function (see -#' examples). +#' @param aes_col,aes_fill optional arguments that define separate sets and +#' colors or fills them. Expects anything that works with the layer data +#' [ggplot2::aes()]. The default color palette can be overwritten outside the +#' function (see examples). #' @param x.axis.breaks,y.axis.breaks Where should breaks occur on the x and #' y.axis? Expects a `numeric vector` with all the breaks. If you want to #' activate the default behaviour of [ggplot2], you need to put in @@ -85,7 +85,7 @@ #' x.axis = Datetime, #' y.axis = `MELANOPIC EDI`, #' y.axis.label = "mEDI (lx)", -#' col = Source) +#' aes_col = Source) #' plot #' #' #you can easily overwrite the color scale afterwards @@ -99,7 +99,8 @@ gg_day <- function(dataset, end.date = NULL, x.axis = Datetime, y.axis = MEDI, - col = NULL, + aes_col = NULL, + aes_fill = NULL, group = NULL, geom = "point", scales = "fixed", @@ -149,7 +150,8 @@ gg_day <- function(dataset, ggplot2::geom_ribbon( ggplot2::aes(ymin = 0, ymax = !!y, group = {{ group }}, - col = {{ col }}), + col = {{ aes_col }}, + fill = {{ aes_fill }}), outline.type = "upper", ... ) @@ -209,7 +211,8 @@ gg_day <- function(dataset, eval(geom_function_expr)( ggplot2::aes( group = {{ group }}, - col = {{ col }}, + col = {{ aes_col }}, + fill = {{ aes_fill }}, ), ...) + ribbon + # Scales -------------------------------------------------------------- diff --git a/R/gg_overview.R b/R/gg_overview.R index 1c97399..50ef01f 100644 --- a/R/gg_overview.R +++ b/R/gg_overview.R @@ -109,6 +109,7 @@ gg_overview <- function(dataset, #general information ggplot2::labs(x = "Datetime")+ #theming and styling + ggplot2::scale_x_datetime()+ cowplot::theme_cowplot()+ ggplot2::theme( panel.grid.major = ggplot2::element_line(colour = "grey98"), diff --git a/R/helper.R b/R/helper.R index 804ca4d..9369a79 100644 --- a/R/helper.R +++ b/R/helper.R @@ -38,14 +38,36 @@ is.all.scalar <- function(...) { purrr::every(\(x) length(x) == 1) } -#counts the different time differences per group (in a grouped dataset) +#' Counts the Time differences (epochs) per group (in a grouped dataset) +#' +#' @inheritParams cut_Datetime +#' +#' @return a `tibble` with the number of occurences of each time difference per +#' group +#' @export +#' +#' @examples +#' #get a dataset with irregular intervals +#' filepath <- system.file("extdata/sample_data_LYS.csv", package = "LightLogR") +#' dataset <- import$LYS(filepath) +#' +#' #count.difftime returns the number of occurences of each time difference +#' #and is more comprehensive in terms of a summary than `gap_finder` or +#' #`dominant_epoch` +#' count.difftime(dataset) +#' dominant_epoch(dataset) +#' gap_finder(dataset) +#' +#' #irregular data can be regularized with `aggregate_Datetime` +#' dataset %>% aggregate_Datetime(unit = "15 secs") %>% count.difftime() + count.difftime <- function(dataset, Datetime.colname = Datetime) { dataset %>% dplyr::mutate( difftime = c(NA, diff({{Datetime.colname}}) %>% lubridate::as.duration()) ) %>% tidyr::drop_na(difftime) %>% - dplyr::count(difftime, sort = TRUE) + dplyr::count(difftime = difftime %>% lubridate::as.duration(), sort = TRUE) } #calculate the nth Quantile of time differences per group (in a grouped dataset) diff --git a/R/import_LL.R b/R/import_LL.R index 8fc309b..eee5a14 100644 --- a/R/import_LL.R +++ b/R/import_LL.R @@ -124,6 +124,7 @@ imports <- function(device, auto.id = ".*", manual.id = NULL, locale = readr::default_locale(), + silent = FALSE, ... = ), #function expression @@ -169,7 +170,7 @@ imports <- function(device, dplyr::arrange(Datetime, .by_group = TRUE) #give info about the file - import.info(tmp, !!device, tz, !!ID.colname) + if(!silent) import.info(tmp, !!device, tz, !!ID.colname) #return the file tmp diff --git a/R/symlog_trans.R b/R/symlog_trans.R index f69337d..b04a9e5 100644 --- a/R/symlog_trans.R +++ b/R/symlog_trans.R @@ -23,13 +23,13 @@ #' .default = `MELANOPIC EDI`)) #' #basic application where transformation, breaks and labels are set manually #' dataset %>% -#' gg_day(col = Source) + +#' gg_day(aes_col = Source) + #' ggplot2::scale_y_continuous( #' trans = "symlog") #' #' #the same plot, but with breaks and labels set manually #' dataset %>% -#' gg_day(col = Source) + +#' gg_day(aes_col = Source) + #' ggplot2::scale_y_continuous( #' trans = "symlog", #' breaks = c(-10^(5:0), 0, 10^(0:5)), @@ -38,7 +38,7 @@ #' #setting individual arguments of the symlog function manually allows #' #e.g., to emphasize values smaller than 1 #' dataset %>% -#' gg_day(col = Source) + +#' gg_day(aes_col = Source) + #' ggplot2::scale_y_continuous( #' trans = symlog_trans(thr = 0.01), #' breaks = c(-10^(5:-1), 0, 10^(-1:5)), diff --git a/README.Rmd b/README.Rmd index 9d14770..0d9cee5 100644 --- a/README.Rmd +++ b/README.Rmd @@ -90,7 +90,7 @@ There is a wide range of options to the `gg_day()` function to customize the out ```{r, fig.retina=2} dataset %>% gg_day( - col = MEDI >= 250, scales = "fixed", size = 0.5) + + aes_col = MEDI >= 250, scales = "fixed", size = 0.5) + scale_color_discrete(type = c("orange", "skyblue")) ``` @@ -103,7 +103,7 @@ sample.data.environment %>% gg_day( start.date = "2023-08-18", y.axis = `MELANOPIC EDI`, - col = Source, + aes_col = Source, scales = "fixed", geom = "line") ``` @@ -114,7 +114,7 @@ sample.data.environment %>% gg_day( end.date = "2023-08-15", y.axis = `MELANOPIC EDI`, - col = Source, + aes_col = Source, scales = "fixed", geom = "boxplot", group = interaction(Source, Datetime.rounded)) + diff --git a/README.md b/README.md index 7815636..1fa6e58 100644 --- a/README.md +++ b/README.md @@ -126,7 +126,7 @@ options. You can also override most of the defaults, e.g., for different ``` r dataset %>% gg_day( - col = MEDI >= 250, scales = "fixed", size = 0.5) + + aes_col = MEDI >= 250, scales = "fixed", size = 0.5) + scale_color_discrete(type = c("orange", "skyblue")) #> Scale for colour is already present. #> Adding another scale for colour, which will replace the existing scale. @@ -147,7 +147,7 @@ sample.data.environment %>% gg_day( start.date = "2023-08-18", y.axis = `MELANOPIC EDI`, - col = Source, + aes_col = Source, scales = "fixed", geom = "line") #> Only Dates will be used from start.date and end.date input. If you also want to set Datetimes or Times, consider using the `filter_Datetime()` function instead. @@ -170,7 +170,7 @@ sample.data.environment %>% gg_day( end.date = "2023-08-15", y.axis = `MELANOPIC EDI`, - col = Source, + aes_col = Source, scales = "fixed", geom = "boxplot", group = interaction(Source, Datetime.rounded)) + diff --git a/_pkgdown.yml b/_pkgdown.yml index 4cac854..2c4ab87 100644 --- a/_pkgdown.yml +++ b/_pkgdown.yml @@ -15,20 +15,29 @@ reference: - import - import.Statechanges - - title: Process + - title: Insight desc: > - This section includes functions to process light logger data, e.g., to - validate and clean data, to filter, cut or aggreagate data, or to join - datasets. + This section includes functions to gain more insight into light logger. + Functions in this section will not return a version of the input dataset, + but rather information based on it. contents: + - count.difftime - dominant_epoch - gapless_Datetimes - - gap_handler - gap_finder + + - title: Validate & Process + desc: > + This section includes functions to process light logger data, e.g., to + validate and clean data, to filter, cut or aggreagate data, or to join + datasets. All of these functions will return a version of the input dataset. + contents: + - gap_handler - cut_Datetime - aggregate_Datetime - create_Time.data - filter_Datetime + - filter_Datetime_multiple - filter_Date - filter_Time - join.datasets @@ -53,7 +62,15 @@ reference: contents: - gg_overview - gg_day + - gg_days + + - title: Helpers + desc: > + This section includes helper functions that are used in the other sections. + contents: - symlog_trans + - Datetime_breaks + - Datetime_limits - title: Datasets desc: > diff --git a/man/count.difftime.Rd b/man/count.difftime.Rd new file mode 100644 index 0000000..a936fd5 --- /dev/null +++ b/man/count.difftime.Rd @@ -0,0 +1,39 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/helper.R +\name{count.difftime} +\alias{count.difftime} +\title{Counts the Time differences (epochs) per group (in a grouped dataset)} +\usage{ +count.difftime(dataset, Datetime.colname = Datetime) +} +\arguments{ +\item{dataset}{A light logger dataset. Expects a \code{dataframe}. If not imported +by \link{LightLogR}, take care to choose a sensible variable for the +\code{Datetime.colname}.} + +\item{Datetime.colname}{column name that contains the datetime. Defaults to +\code{"Datetime"} which is automatically correct for data imported with +\link{LightLogR}. Expects a \code{symbol}. Needs to be part of the \code{dataset}.} +} +\value{ +a \code{tibble} with the number of occurences of each time difference per +group +} +\description{ +Counts the Time differences (epochs) per group (in a grouped dataset) +} +\examples{ +#get a dataset with irregular intervals +filepath <- system.file("extdata/sample_data_LYS.csv", package = "LightLogR") +dataset <- import$LYS(filepath) + +#count.difftime returns the number of occurences of each time difference +#and is more comprehensive in terms of a summary than `gap_finder` or +#`dominant_epoch` +count.difftime(dataset) +dominant_epoch(dataset) +gap_finder(dataset) + +#irregular data can be regularized with `aggregate_Datetime` +dataset \%>\% aggregate_Datetime(unit = "15 secs") \%>\% count.difftime() +} diff --git a/man/gg_day.Rd b/man/gg_day.Rd index 10f5066..e3dbc50 100644 --- a/man/gg_day.Rd +++ b/man/gg_day.Rd @@ -10,7 +10,8 @@ gg_day( end.date = NULL, x.axis = Datetime, y.axis = MEDI, - col = NULL, + aes_col = NULL, + aes_fill = NULL, group = NULL, geom = "point", scales = "fixed", @@ -36,9 +37,9 @@ by \link{LightLogR}, take care to choose a sensible variable for the \code{x.axi \item{start.date, end.date}{Choose an optional start or end date within your \code{dataset}. Expects a \code{date}, which can also be a \code{character} that is interpretable as a date, e.g., \code{"2023-06-03"}. If you need a Datetime or -want to cut specific times of each day, use the \code{\link[=filter_Datetime]{filter_Datetime()}} function. -Defaults to \code{NULL}, which means that the plot starts/ends with the -earliest/latest date within the \code{dataset}.} +want to cut specific times of each day, use the \code{\link[=filter_Datetime]{filter_Datetime()}} +function. Defaults to \code{NULL}, which means that the plot starts/ends with +the earliest/latest date within the \code{dataset}.} \item{x.axis, y.axis}{column name that contains the datetime (x, defaults to \code{"Datetime"} which is automatically correct for data imported with @@ -47,10 +48,10 @@ melanopic EDI, which is a standard measure of stimulus strength for the nonvisual effects of light). Expects a \code{symbol}. Needs to be part of the \code{dataset}.} -\item{col}{optional column name that defines separate sets and colors them. -Expects anything that works with the layer data \code{\link[ggplot2:aes]{ggplot2::aes()}}. The -default color palette can be overwritten outside the function (see -examples).} +\item{aes_col, aes_fill}{optional arguments that define separate sets and +colors or fills them. Expects anything that works with the layer data +\code{\link[ggplot2:aes]{ggplot2::aes()}}. The default color palette can be overwritten outside the +function (see examples).} \item{group}{Optional column name that defines separate sets. Useful for certain geoms like \code{boxplot}.Expects anything that works with the layer @@ -111,9 +112,9 @@ used to adjust to adjust size, linewidth, or linetype.} A ggplot object } \description{ -\code{\link[=gg_day]{gg_day()}} will create a simple ggplot for every data in a dataset. The result -can further be manipulated like any ggplot. This will be sensible to refine -styling or guides. +\code{\link[=gg_day]{gg_day()}} will create a simple ggplot for every data in a dataset. The +result can further be manipulated like any ggplot. This will be sensible to +refine styling or guides. } \details{ Besides plotting, the function creates two new variables from the given @@ -139,7 +140,7 @@ end.date = "2023-08-16", x.axis = Datetime, y.axis = `MELANOPIC EDI`, y.axis.label = "mEDI (lx)", -col = Source) +aes_col = Source) plot #you can easily overwrite the color scale afterwards diff --git a/man/import.Dataset.Rd b/man/import.Dataset.Rd index 033dd88..e1fd94b 100644 --- a/man/import.Dataset.Rd +++ b/man/import.Dataset.Rd @@ -131,7 +131,7 @@ dplyr::slice(1500:1505) \%>\% flextable::flextable() \%>\% flextable::autofit() }\if{html}{\out{}}\if{html}{\out{ -
}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}Datetime\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}TEMPERATURE\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}LIGHT\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}MEDI\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}Id\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}2023-07-14 13:04:18\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}29.88\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}21,847.64\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}20,660.74\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}sample_data_ActLumus\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}2023-07-14 13:05:18\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}29.88\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}22,033.77\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}20,834.91\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}sample_data_ActLumus\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}2023-07-14 13:06:18\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}29.81\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}21,769.50\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}20,600.82\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}sample_data_ActLumus\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}2023-07-14 13:07:18\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}29.69\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}21,177.20\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}20,061.68\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}sample_data_ActLumus\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}2023-07-14 13:08:18\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}29.44\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}20,738.98\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}19,662.14\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}sample_data_ActLumus\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}2023-07-14 13:09:18\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}29.31\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}20,255.17\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}19,203.94\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}sample_data_ActLumus\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{
}} +}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}Datetime\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}TEMPERATURE\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}LIGHT\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}MEDI\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}Id\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}2023-07-14 13:04:18\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}29.88\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}21,847.64\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}20,660.74\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}sample_data_ActLumus\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}2023-07-14 13:05:18\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}29.88\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}22,033.77\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}20,834.91\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}sample_data_ActLumus\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}2023-07-14 13:06:18\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}29.81\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}21,769.50\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}20,600.82\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}sample_data_ActLumus\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}2023-07-14 13:07:18\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}29.69\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}21,177.20\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}20,061.68\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}sample_data_ActLumus\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}2023-07-14 13:08:18\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}29.44\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}20,738.98\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}19,662.14\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}sample_data_ActLumus\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}2023-07-14 13:09:18\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}29.31\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}20,255.17\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}19,203.94\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{

}}\if{html}{\out{}}sample_data_ActLumus\if{html}{\out{}}\if{html}{\out{

}}\if{html}{\out{
}}\if{html}{\out{}} } } diff --git a/man/symlog_trans.Rd b/man/symlog_trans.Rd index 2970722..417e723 100644 --- a/man/symlog_trans.Rd +++ b/man/symlog_trans.Rd @@ -31,13 +31,13 @@ dplyr::mutate(MEDI = dplyr::case_when( .default = `MELANOPIC EDI`)) #basic application where transformation, breaks and labels are set manually dataset \%>\% -gg_day(col = Source) + +gg_day(aes_col = Source) + ggplot2::scale_y_continuous( trans = "symlog") #the same plot, but with breaks and labels set manually dataset \%>\% -gg_day(col = Source) + +gg_day(aes_col = Source) + ggplot2::scale_y_continuous( trans = "symlog", breaks = c(-10^(5:0), 0, 10^(0:5)), @@ -46,7 +46,7 @@ labels = function(x) format(x, scientific = FALSE, big.mark = " ")) #setting individual arguments of the symlog function manually allows #e.g., to emphasize values smaller than 1 dataset \%>\% -gg_day(col = Source) + +gg_day(aes_col = Source) + ggplot2::scale_y_continuous( trans = symlog_trans(thr = 0.01), breaks = c(-10^(5:-1), 0, 10^(-1:5)), diff --git a/tests/testthat/test-helper.R b/tests/testthat/test-helper.R new file mode 100644 index 0000000..2e3ca2c --- /dev/null +++ b/tests/testthat/test-helper.R @@ -0,0 +1,9 @@ +test_that("count.difftime works", { + filepath <- system.file("extdata/sample_data_LYS.csv", package = "LightLogR") + dataset <- import$LYS(filepath, silent = TRUE) + dataset <- count.difftime(dataset) + dataset <- dataset$difftime + expect_equal( + dataset, c("15s", "16s", "17s", "18s") %>% lubridate::as.duration() + ) +}) diff --git a/tests/testthat/test-visualize_helper.R b/tests/testthat/test-visualize_helper.R new file mode 100644 index 0000000..6f7d215 --- /dev/null +++ b/tests/testthat/test-visualize_helper.R @@ -0,0 +1,28 @@ +test_that("Datetime_breaks works", { + dataset <- c("2023-08-15", "2023-08-20") + expect_equal(Datetime_breaks(dataset), + c(1692100800, 1692187200, 1692273600, 1692360000, 1692446400) %>% + lubridate::as_datetime()) + expect_equal(Datetime_breaks(dataset, shift = 0), + c(1692057600, + 1692144000, + 1692230400, + 1692316800, + 1692403200, + 1692489600) %>% lubridate::as_datetime()) + expect_equal(Datetime_breaks(dataset, by = "12 hours"), + c(1692100800, 1692144000, 1692187200, 1692230400, 1692273600, + 1692316800, 1692360000, 1692403200, 1692446400, 1692489600) %>% + lubridate::as_datetime()) +}) + +test_that("Datetime_limits works", { + dataset <- c("2023-08-15", "2023-08-20") + breaks <- Datetime_breaks(dataset) + expect_equal(Datetime_limits(breaks), + c("2023-08-15", "2023-08-20") %>% lubridate::as_datetime()) + expect_equal(Datetime_limits(breaks, start = lubridate::ddays(1)), + c("2023-08-16", "2023-08-20") %>% lubridate::as_datetime()) + expect_equal(Datetime_limits(breaks, length = lubridate::ddays(2)), + c("2023-08-15", "2023-08-18") %>% lubridate::as_datetime()) +})