Tenho dados de um estudo de intervenção com 4 grupos experimentais (Grupo) e três pontos de medição (Tempo). Realizei uma análise de perfil e transição, que resultou em 4 perfis (Perfil). Criei um diagrama aluvial mostrando as transições dos perfis entre os pontos de medição para cada grupo experimental.
library(ggplot2)
library(ggalluvial)
library(dplyr)
library(tidyr)
df <- tibble(id = 1:400, group = sample(1:4, size = 400, replace = TRUE)) |>
crossing(time = 1:3) |>
mutate(profile = sample(1:4, size = n(), replace = TRUE))|>
mutate(profile = as.character(profile), time = as.character(time))
ggplot(df, aes(x = time, stratum = profile, alluvium = id, fill = profile, label = profile)) +
scale_fill_brewer(type = "seq", palette = "BrBG") +
geom_flow() +
geom_stratum() +
labs(x = "Time", y = "N") +
facet_wrap('group', labeller = label_both)
Como os 4 grupos não têm o mesmo tamanho amostral, gostaria de plotar os tamanhos relativos dos estratos em vez dos absolutos, de modo que todos os perfis para cada ponto no tempo totalizem 100%. Não sei como fazer isso. Usar o atributo de peso não funcionou.
Como outra abordagem, você pode introduzir
weight
manualmente e usá-lo diretamente comoy
valor + usarscale_y_continuous(labels = scales::percent_format())
para marcar as porcentagens relativasAqui está outro método formatando cada "faceta" separadamente e combinando os gráficos usando
patchwork
: