Rのggplot2による積み上げグラフ(棒グラフや面グラフ)において凡例順序を指定したいときのメモです。
今回は事例としてWorldPhones
のデータセットを取り扱いました。
library(tidyverse)
df <- data.frame(WorldPhones) %>%
rownames_to_column("year") %>%
gather(key="Country", value="Users", -year) %>%
mutate(year = as.integer(year))
# 凡例の順番を調整する前
g1 <-
ggplot(df, aes(x=year, y=Users, fill=Country)) +
geom_area() +
scale_fill_brewer("blues")

これを例えばAsia
, Europe
, Mid.Amer
, Oceania
, S.Amer
, Africa
, N.Amer
の順番で表示させたい時はこう書けば出来ます。
fill_order <- c('Asia', 'Europe', 'Mid.Amer',
'Oceania', 'S.Amer', 'Africa', 'N.Amer')
g2 <-
ggplot(df, aes(x=year, y=Users, fill=factor(Country, fill_order))) +
geom_area() +
scale_fill_brewer("blues")

- 参考にさせていただきた記事
色々なビジュアライゼーションを描いてみた by R