Imitando uma coluna com o nome e uma com a quantidade de missings
db_ano1 <- data.frame(
nomes = paste0('nome ', 1:500),
missings_1 = as.integer(rnorm(500, mean = 20, sd = 5))
)
db_ano2 <- data.frame(
nomes = paste0('nome ', 1:500),
missings_2 = as.integer(runif(500, 0, 35))
)
db_ano3 <- data.frame(
nomes = paste0('nome ', 1:500),
missings_3 = as.integer(rnorm(500, mean = 20, sd = 5))
)
Vamos criar somente uma base de dados, calcular o número de missings por sujeito nos três anos e ordenar os nomes por quantidade de missings em um vetor tipo fator
library(plyr)
db_final <- join_all(
list(
db_ano1,
db_ano2,
db_ano3
),
by = 'nomes',
type = 'left'
)
db_final$soma_missings <- rowSums(db_final[, 2:4])
db_final$nomes <- factor(
db_final$nomes,
levels = db_final$nomes[
order(
db_final$soma_missings,
decreasing = T
)
]
)
O gráfico vai ser gerado do indivíduo com mais missing para o indivíduo com menos missing. Pra instanciar o gráfico vamos passar o primeiro ano, depois adicionar traços (add_trace()
) para cada um dos outros anos. layout()
será responsável por indicar que é um gráfico tipo stacked, tirar a distância entre as barras e dar os títulos do gráfico, eixos e legenda.
library(plotly)
plot_ly(
db_final,
x = ~nomes,
y = ~missings_1,
type = 'bar',
name = '1° ano'
) %>%
add_trace(
y = ~missings_2,
name = '2° ano'
)%>%
add_trace(
y = ~missings_3,
name = '3° ano'
) %>%
layout(
barmode = 'stack',
bargap = 0,
title = list(
text = '<b>Quantidade acumulada de missings por respondente</b>'
),
yaxis = list(
title = 'Quantidade'
),
xaxis = list(
title = 'Respondentes'
),
legend = list(
title = list(
text='<b> Ano de coleta </b>'
)
)
) %>%
config(
displayModeBar = F
)