12月 2018アーカイブ

ggplot2でX軸の大小を反転させる方法(factorの場合)

はじめに

ggplot2でX軸の大小を反転させる方法について

無指定の場合

ggplot2で描画する際にcoord_flip()を使用するとX軸とY軸を入れ替えることができる。
ただし、その場合には順番が小さい方が下にきてしまい、思い通りの図にならない。

library(ggplot2)

p <- ggplot(iris)
p + aes(x = Species, y = Sepal.Length) +
     geom_boxplot() +
     coord_flip()

plot of chunk unnamed-chunk-1

reorder関数とdplyr::desc関数を使用する場合

このサイトの内容を参考にしました。

reorder関数を使用することでfactorの順序を変えることができる。
この時dplyrパッケージのdesc関数で降順に変換する。

ただし、後に示しているが、
forcatsパッケージのfct_rev関数を使用する方法が最も簡単である。

library(ggplot2)

p + aes(x = reorder(Species, dplyr::desc(Species)),
        y = Sepal.Length) +
     geom_boxplot() +
    coord_flip()

plot of chunk unnamed-chunk-2

forcatsパッケージのfct_rev関数を使用する場合

ここではforcatsパッケージのfct_rev関数を使用した方法を示す。
この関数はfactorの順序を反転させるものである。

したがって、個人的にはこの方法を使用することにする。

library(ggplot2)
library(magrittr)
library(forcats)

p + aes(x = Species %>% fct_rev, y = Sepal.Length) +
     geom_boxplot() +
     coord_flip()

plot of chunk unnamed-chunk-3

forecatsパッケージを読み込まない場合には以下のようにする。

library(ggplot2)
library(magrittr)

p + aes(x = Species %>% forcats::fct_rev(), y = Sepal.Length) +
     geom_boxplot() +
     coord_flip()