-
Notifications
You must be signed in to change notification settings - Fork 0
/
plotar_violin_promis.R
55 lines (52 loc) · 2.18 KB
/
plotar_violin_promis.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#' Criar gráfico de violino com boxplot de escores da PROMIS no baseline e após 1 mês do tratamento
#'
#' @param dados Tibble ou dataframe com as variáveis a serem plotadas.
#' @param dominio Domínio a ser plotado. Pode assumir os valores `dep` (depressão), `anx` (ansiedade), `irr` (irritabilidade) ou `sat` (satisfação com a vida).
#'
#' @return Retorna um objeto do ggplot2.
#' @export
#'
plotar_violin_promis <- function(dados, dominio) {
rotulo <- dplyr::case_when(
dominio == "dep" ~ "Depress\u00E3o",
dominio == "anx" ~ "Ansiedade",
dominio == "irr" ~ "Irritabilidade",
dominio == "sat" ~ "Satisfa\u00E7\u00E3o"
)
grafico <- dados |>
dplyr::filter(!is.na(.data[[paste0("g_promis_", dominio)]])) |>
tidyr::pivot_longer(
cols = c(
paste0("b_promis_", dominio),
paste0("g_promis_", dominio)
),
names_to = paste0("promis_", dominio),
values_to = paste0("valores_promis_", dominio)
) |>
ggplot2::ggplot() +
ggplot2::geom_violin(ggplot2::aes(
x = as.factor(.data[[paste0("promis_", dominio)]]),
y = .data[[paste0("valores_promis_", dominio)]],
fill = .data[[paste0("promis_", dominio)]]
)) +
ggplot2::geom_boxplot(ggplot2::aes(x = as.factor(.data[[paste0("promis_", dominio)]]),
y = .data[[paste0("valores_promis_", dominio)]])) +
ggplot2::scale_x_discrete(labels = c(
#paste0("b_promis_", dominio) = "Baseline",
#paste0("g_promis_", dominio) = "1 m\u00EAs"
"Baseline", "1 m\u00EAs"
)) +
ggplot2::theme_minimal(base_size = 20) +
ggplot2::labs(
x = "Fase de acompanhamento",
y = "Escores de Depress\u00E3o da PROMIS",
title = paste0(
"Gr\u00E1fico de violino e boxplot dos escores de ",
rotulo,
" ap\u00F3s tratamento"
),
subtitle = "Avalia\u00E7\u00E3o no baseline e 1 m\u00EAs ap\u00F3s o tratamento"
) +
ggplot2::theme(legend.position = "none")
return(grafico)
}