R/desenha-serie-indice.R

Defines functions desenha_serie_indice

Documented in desenha_serie_indice

#' @title Desenha serie de indices
#'
#' @description Desenha os dados de series de casos e obitos do MS por indice, pico de 2020 considerado como 1
#'
#' @param dados Dados do ministério da saúde (ou brasilio) para o DF
#'
#' @return Um gráfico considerando o índice de casos/obitos
#'
#' @import ggplot2

desenha_serie_indice = function(dados){
  # Conformando ao tipo data.table
  dados = transforma_dt(dados)

  # Gera media movel
  dados[, `:=`(casos_mm = frollmean(casosNovos, 7),
               obitos_mm = frollmean(obitosNovos, 7))]

  # Calcula maximo de 2020
  indices = dados[data < as.Date("2021-01-01"), .(maximo_obitos = max(obitos_mm, na.rm = TRUE), maximo_casos = max(casos_mm, na.rm = TRUE))]

  # Estabelece serie em funcao do maximo
  dados[,`:=`(casos_indice = casos_mm/indices$maximo_casos[[1]],
              obitos_indice = obitos_mm/indices$maximo_obitos[[1]])]

  # Seleciona dados de Interesse
  dados = dados[, .(data, casos_indice, obitos_indice)]

  # Transforma em formato tidy
  dados = melt(dados, id.vars = "data")

  # Corrige nomes das vairaveis
  dados[, variable := ifelse(variable == "casos_indice", "Casos", "Óbitos")]

  # Gera grafico
  grafico = ggplot(dados, aes(x = data, y = value, color = variable)) +
    geom_line(size = 1.5) +
    ggrepel::geom_label_repel(data = dados[data == max(data)],
                              aes(label = scales::number(value, accuracy = 0.01, decimal.mark = ","), x = data + 50, y = value),
                              direction = "y", size = 6, show.legend = FALSE)+
    scale_color_manual(values = c("#5277a4", "#e25658")) +
    labs(x = "", y = "Índice", color = "Série:") +
    theme_bw() +
    scale_x_date(date_labels = "%m/%Y", date_breaks = "3 months") +
    theme(text = element_text(size = 18))

  # Retorna resultado
  return(grafico)
}
mellohenrique/codeplan.boletim2 documentation built on March 20, 2022, 3:15 a.m.