とりあえず半歩

学んだことを1日1個、簡単なことでも良いから記録していきたい。

横棒グラフを描く

課題

ファンネルグラフを描きたいので、ggplot2パッケージの棒グラフを用いて実現する。

実行

実行環境

  • Windows 7 Home Premium 64bit
  • R 3.2.2 64bit
  • RStudio Version 0.99.489

使ったRパッケージの情報

  • data.table 1.9.6
  • ggplot2 1.0.1

説明

ggplot2の棒グラフは、そのまま表示すると縦棒グラフになる。

これをx軸とy軸を入れ替えて横棒グラフにするにはcoord_flip()関数を用いる。

コード

library(data.table)
library(ggplot2)

# データは勝手気ままに作ったもの
process <- c("A", "B", "C", "D", "E")
data <- data.table(Process=factor(process, levels=rev(process)),
                   Count=c(100, 95, 50, 45, 40))
g <- ggplot(data, aes(x=Process, y=Count)) +
  geom_bar(colour="#00BF7D",
           fill="#00BF7D",
           alpha=0.5,
           width=1.0,
           stat="identity") +
  theme_bw() +
  theme(axis.text.x=element_text(size=16),
        axis.text.y=element_text(size=16),
        axis.title.x=element_text(size=20),
        axis.title.y=element_text(size=20),
        legend.text=element_text(size=12),
        legend.title=element_text(size=16),
        plot.title=element_text(size=28),
        strip.text.x=element_text(size=16),
        strip.text.y=element_text(size=16)) +
  labs(title="各プロセスの通過品数", x="個数", y="プロセス") +
  coord_flip()
plot(g)

結果

f:id:sotoattanito:20151124233628p:plain

補足

x軸の並べる順をfactor()関数で決めている。そのままだと下から上に並んでしまうため、levels引数でrev()関数を使って上から下へと並ぶようにしている。

棒と棒の間は、わざと隙間をなくしている。隙間を作りたいときはgeom_bar()関数のwidth引数を調整する。