R/plots.R

Defines functions build.labels

Documented in build.labels

#' Builds labels for plots
#'
#' @param input table
#' @param order.by  what should be ordered (to show max, min and current)
#' @param name name of grouping variable
#' @param digits digits on numbers
#'
#' @return
build.labels <- function(input, order.by, name, digits = 2, show_plus = FALSE) {
  my.format <- function(val) {
    val %>%
      round(digits = digits) %>%
      format(big.mark = ',', trim = TRUE) %>%
      return()
  }

  tmp <- input %>%
    dplyr::arrange(desc(date), desc(!!as.name(order.by))) %>%
    dplyr::mutate(state.data = !!as.name(name),
                  state.data.order = !!as.name(order.by),
                  state.data.val.max = max(!!as.name(order.by), na.rm = TRUE),
                  state.data.val.last = first(!!as.name(order.by), default = 0)) %>%
    dplyr::mutate(state.data.label = paste0(state.data,
                                            ' (last: ',
                                            if_else(show_plus & state.data.val.last > 0, '+', ''),
                                            state.data.val.last %>% my.format,
                                            ' max: ',
                                            if_else(show_plus && max(!!as.name(order.by), na.rm = TRUE) > 0, '+', ''),
                                            max(!!as.name(order.by), na.rm = TRUE) %>% my.format,
                                            #' min: ',
                                            #min(!!as.name(order.by), na.rm = TRUE) %>% my.format,
                                            ')'
                                            ))

  tmp %>%
    dplyr::mutate(label = dplyr::if_else(state.data.order == max(state.data.order, na.rm = TRUE), state.data.label, NA_character_),
                  state.data = factor(state.data,
                                      levels = .$state.data %>% unique)) %>%
    dplyr::arrange(label, desc(date)) %>%
    dplyr::mutate(label = if_else(date == first(date), label, NA_character_)) %>%
    dplyr::select(-state.data, -state.data.label, -state.data.val.last, -state.data.val.max, -state.data.order) %>%
    dplyr::arrange(desc(date)) %>%
    return()
}
averissimo/covid19.pt.data documentation built on March 29, 2022, 3:24 p.m.