為了可讀性調整堆疊順序
在上一張圖中,因為我們把所有不是麻疹(measles)或腮腺炎(mumps)的疾病都歸到同一個類別,所以可以合理假設你對「other」這個類別的走勢關注較少,重點在麻疹與腮腺炎。
但因此產生了一個問題。現在長條的堆疊順序是麻疹在最上層、腮腺炎在中間、other 在最底層。這會讓你很難直觀判讀腮腺炎隨時間的變化,因為它的基準線並不固定,會受到麻疹比例變動的影響。
Ggplot 會依它在資料集中看到變數的順序來決定長條與圖例的順序。要覆寫這個行為,請把 disease 欄位轉成因子,並將 levels 設為我們想在圖上使用的順序。
本練習屬於課程
R 視覺化最佳實務
練習說明
- 修改資料處理管線中的 mutate,把
disease轉成因子,並設定levels = c('measles', 'other', 'mumps')。 - 使用和上一個練習相同的程式碼重新繪圖。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
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')