Q: 6 ggplot2で縦軸と横軸をひっくり返したい

6.1 Q

例えば以下のようなグラフで、x軸とy軸をひっくり返したい(横棒グラフ)にしたいのですが、どうしたらいいのでしょうか?

library(ggplot2)
ggplot(mtcars, aes(x = as.factor(gear))) +
  geom_bar()

6.2 A

+ coord_flip()を追加すると、x軸とy軸が入れ替わります:

ggplot(mtcars, aes(x = as.factor(gear))) +
  geom_bar() +
  coord_flip()

この設定は、別に棒グラフだけではなく、全てに適用可能です。

6.3 応用

このcoord_flip()を設定した場合、更に軸に設定を加えるときは元の座標軸に設定してください:

例) count軸の範囲を変更する場合:

ggplot(mtcars, aes(x = as.factor(gear))) +
  geom_bar() +
  coord_flip() +
  ylim(c(0,20))

また、棒グラフを横にすると、下から順番にならびます。軸の内容の並べ替えについては、以下の記事を参照してください: - ggplot2逆引き - x軸を並べ替えたい - Qiita

今回x軸はfactor型なので、順番を入れ替えるには以下のようにreorder()を当てて変更しておく必要があります:

例) as.factor(gear)軸の順序を反転する場合:

ggplot(mtcars, aes(x = reorder(as.factor(gear), gear * -1))) +
  geom_bar() +
  coord_flip()

なお、x軸が連続変量であったならば、単に+ scale_x_reverse()を追加すればOKです。

例) gear軸の順序を反転する場合:

ggplot(mtcars, aes(x = gear)) +
  geom_bar() +
  coord_flip() +
  scale_x_reverse()