R/desenha-series.R

Defines functions desenha_series

Documented in desenha_series

#' @title Desenha dados de series
#'
#' @description Desenha os dados de series de casos por primeiros sintomas e cadastro, e series de obitos por data de notificacao e data de obito
#'
#' @param lista lista com os dados de series
#'
#' @return uma lista com grafico de casos por primeiros sintomas e cadastro e obitos por data de obito e data de notificacao
#'
#' @import ggplot2


desenha_series = function(lista){
  # Definindo dados de casos
  dados_casos = lista[["casos"]]

  cadastro = dados_casos[fonte == "Data do Cadastro",]
  ps = dados_casos[fonte == "Data dos Primeiros Sintomas",]

  # Definindo dados de obitos
  dados_obitos = lista[["obitos"]]

  ssp = dados_obitos[fonte == "Data do Óbito",]
  ms = dados_obitos[fonte == "Data de Notificação",]

  # Gráficos
  ## Casos
  ### Primeiros sintomas
  graf_ps = ggplot() +
    geom_col(data = ps[tipo == "Média móvel de 7 dias",], aes(x = data, y = casos), alpha = 0.9) +
    geom_line(data = ps, aes(x = data, y = valor, color = tipo), size = 1.1) +
    ggrepel::geom_label_repel(data = ps[data == max(data),], aes(x = data, label = round(valor), y = valor, color = tipo), direction = "y", nudge_x = 10, size = 6,  show.legend = FALSE) +
    scale_y_continuous(limits = c(0, 12000)) +
    theme_bw() +
    labs(x = "", y = "Casos por data de\nprimeiros sintomas", color = "Tipo de média") +
    theme(legend.position="bottom", text = element_text(size = 20)) +
    scale_color_manual(values = c("#5277a4", "#59a14f")) +
    scale_x_date(date_breaks = "2 months", date_labels = "%b/%y")

  ### Cadastro
  graf_cadastro = ggplot() +
    geom_col(data = cadastro[tipo == "Média móvel de 7 dias",], aes(x = data, y = casos), alpha = 0.9) +
    geom_line(data = cadastro, aes(x = data, y = valor, color = tipo), size = 1.1) +
    ggrepel::geom_label_repel(data = cadastro[data == max(data),], aes(x = data, label = round(valor), y = valor, color = tipo), direction = "y", nudge_x = 10, size = 6,  show.legend = FALSE) +
    scale_y_continuous(limits = c(0, 12000)) +
    theme_bw() +
    labs(x = "", y = "Casos por data de cadastro", color = "Tipo de média") +
    theme(legend.position="bottom", text = element_text(size = 20)) +
    scale_color_manual(values = c("#5277a4", "#59a14f")) +
    scale_x_date(date_breaks = "2 months", date_labels = "%b/%y")


  ## Obitos
  ### Data do obito
  graf_obito_data = ggplot() +
    geom_col(data = ssp[ssp$tipo == "Média móvel de 7 dias",], aes(x = data, y = casos), alpha = 0.7) +
    geom_line(data = ssp, aes(x = data, y = valor, color = tipo), size = 1.1) +
    ggrepel::geom_label_repel(data = ssp[ssp$data == max(ssp$data),], aes(x = data, label = ifelse(valor < 1, "<1", round(valor)), y = valor, color = tipo), nudge_x = 10, direction = "y", size = 6,  show.legend = FALSE) +
    theme_bw() +
    scale_y_continuous(limits = c(0, 80)) +
    labs(x = "", y = "Óbitos por data\ndo óbito", color = "Tipo de média") +
    theme(legend.position="bottom", text = element_text(size = 20) ) +
    scale_color_manual(values = c("#e25658", "#59a14f")) +
    scale_x_date(date_breaks = "2 months", date_labels = "%b/%y")

  ### Obito MS
  graf_obito_ms = ggplot() +
    geom_col(data = ms[ms$tipo == "Média móvel de 7 dias",], aes(x = data, y = casos), alpha = 0.7) +
    geom_line(data = ms, aes(x = data, y = valor, color = tipo), size = 1.1) +
    ggrepel::geom_label_repel(data = ms[ms$data == max(ms$data),], aes(x = data, label = ifelse(valor < 1, "<1", round(valor)), y = valor, color = tipo), nudge_x = 10, direction = "y", size = 6,  show.legend = FALSE) +
    theme_bw() +
    scale_y_continuous(limits = c(0, 80)) +
    labs(x = "", y = "Óbitos por data\nde notificação", color = "Tipo de média") +
    theme(legend.position="bottom", text = element_text(size = 20) ) +
    scale_color_manual(values = c("#e25658", "#59a14f")) +
    scale_x_date(date_breaks = "2 months", date_labels = "%b/%y")

  # Definindo resultados
  lista_graficos = list(
    casos = gridExtra::arrangeGrob(graf_ps, graf_cadastro),
    obitos = gridExtra::arrangeGrob(graf_obito_data, graf_obito_ms))

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