Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

(2016/03/15追記)ggplot2 v2.1.0で動作確認しました。

Q

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

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

NG_example.R-1.png

A

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

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

OK_example.R-1.png

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

応用

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

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

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

OK_eample2.R-1.png

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

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

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

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

OK_example3.R-1.png

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

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

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

OK_example4.R-1.png

参考

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away