#' @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)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.