【ggplot備忘録】棒グラフでdodgeとstackとを同時に行う方法

ggplotの棒グラフは便利ですね。
position変更するだけで棒グラフの見栄えを簡単に切り替えられます。

#R
library(ggplot2)
library(dplyr)
gp <- ggplot(mpg, aes(manufacturer)) + theme(axis.text.x = element_text(angle = 90, vjust = 0.5))
gp + geom_bar(aes(fill = class), position = "stack")
gp + geom_bar(aes(fill = factor(year)), position = "dodge")
gp + geom_bar(aes(fill = drv), position = "fill")

メーカーごとの車種の数。x軸の分類の総数も見たいときはposition = “stack”。dodgeとtoyotaのデータが多いことが分かる

メーカーごとの年別の数。x軸の分類の中でも比較したい場合はposition = “fill”。dodgeは増えて、toyotaは減ったことが分かる。

メーカーごとのドライブ別の数。x軸の分類の中で比を比較したいときはposition = “fill”

特にdodgeがユニークな見せ方でカテゴリ間で比較ながらx軸間で比較したいときに役立ちます。

さて、この便利なdodgeも使いたい、そしてそこに表示するのは積み上げ棒グラフとしたいと考えるかもしれません。
positionは複数指定できないため基本機能でこれは実現できません。
この場合は次のようにfacetを使ったトリックで並んでいるように見せられます。

#R
ggplot(mpg, aes(factor(year))) +
  geom_bar(aes(fill = class), position = "stack") +
  facet_wrap(~manufacturer, nrow = 1) +
  theme(
    axis.text.x = element_text(angle = 90, vjust = 0.5),
    panel.spacing = unit(0, "lines"),
    strip.text = element_text(angle = 90),
    axis.title.x = element_text(size = 0)
  )

stackとdodgeの両方!

【参考サイト】

r – ggplot2 – bar plot with both stack and dodge – Stack Overflow

コメントを残す