Ordinare lo stack per leggibilità
Nell’ultimo grafico, dato che abbiamo raggruppato tutte le malattie che non sono morbillo e parotite in una categoria a parte, è ragionevole supporre che ci interessi meno l’andamento della categoria "other" rispetto a quello di morbillo e parotite.
Per questo, il grafico che abbiamo creato ha un problema. Il modo in cui le barre sono impilate — con morbillo in alto, parotite in mezzo e other in basso — rende difficile intuire bene il comportamento della parotite nel tempo, perché la sua linea di base non è costante a causa delle variazioni nelle proporzioni del morbillo.
Ggplot ordina le barre e la legenda in base all’ordine con cui vede le variabili nel dataset. Per superare questo comportamento, trasforma la colonna disease in un fattore impostando i levels nell’ordine che vogliamo usare nel grafico.
Questo esercizio fa parte del corso
Buone pratiche di visualizzazione in R
Istruzioni dell'esercizio
- Modifica la funzione mutate nella pipeline di manipolazione dati per trasformare
diseasein un fattore conlevels = c('measles', 'other', 'mumps'). - Riesegui il grafico usando lo stesso codice dell’esercizio precedente.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
disease_counts <- who_disease %>%
mutate(
disease = ifelse(disease %in% c('measles', 'mumps'), disease, 'other') %>%
factor(___) # change factor levels to desired ordering
) %>%
group_by(disease, year) %>%
summarise(total_cases = sum(cases))
# plot
ggplot(disease_counts, aes(x = year, y = total_cases, fill = disease)) +
geom_col(position = 'fill')