geom_bar

ggplot2 では geom_bar で棒グラフを描く。棒グラフの並べ方などは、geom_bar の引数で指定する。また、横軸の目盛りを斜めて描いたりする場合は、theme の引数で指定する。

棒グラフ

ggplot2 で簡単な棒グラフを描く方法を示す。棒グラフの色を、学術ジャーナルの図のように仕上げるために、ggsci のカラーパレットを呼び出して使う。

library(ggplot2)
library(ggsci)

x <- data.frame(
    sample = c("A1", "A2", "B1", "B2", "C1", "C2"),
    weight = c(0.32, 0.33, 0.21, 0.22, 0.37, 0.36)
)

g <- ggplot(x, aes(x = sample, y = weight, fill = sample))
g <- g + geom_bar(stat = "identity")
g <- g + scale_fill_nejm()
plot(g)
ggplot2による棒グラフの描画

横軸の座標ラベルが長い場合、重なることがある。このとき、次のように theme 関数で、ラベルの回転を調整して、斜めにすることができる。

g <- g + theme(axis.text = element_text(angle = 30))
plot(g)
ggplot2による棒グラフの描画

帯グラフ

棒グラフを横向きにした帯グラフを描くには、まず geom_bar 関数で棒グラフを描き、続いて coord_flip 関数で x と y 軸を入れ替える。

library(ggplot2)
library(ggsci)

x <- data.frame(
    sample = c("A1", "A2", "B1", "B2", "C1", "C2"),
    weight = c(0.32, 0.33, 0.21, 0.22, 0.37, 0.36)
)

g <- ggplot(x, aes(x = sample, y = weight, fill = sample))
g <- g + geom_bar(stat = "identity")
g <- g + coord_flip()
g <- g + scale_fill_nejm()
plot(g)
ggplot2による帯グラフの描画

積み上げ棒グラフ

積み上げグラフを描く場合、どの項目でグルーピングするのかを指定する必要がある。例えば、次の場合は、cell 列でグルーピングする例である。

library(ggplot2)
library(ggsci)

x <- data.frame(
    cell   = c("A", "A", "B", "B", "C", "C"),
    sample = c("A1", "A2", "B1", "B2", "C1", "C2"),
    weight = c(0.32, 0.33, 0.21, 0.22, 0.37, 0.36)
)

g <- ggplot(x, aes(x = cell, y = weight, fill = sample))
g <- g + geom_bar(stat = "identity")
g <- g + scale_fill_nejm()
plot(g)
ggplot2による積み上げ棒グラフの描画

積み上げ棒グラフ(割合)

積み上げグラフの縦軸を 100% となるようにして、各項目を割合でプロットするには、geom_bar 関数の引数を position = "fill" と指定する。横軸のラベルをパーセント表記にするために、scales パッケージ中の perecnt 変数を利用する。

library(ggplot2)
library(ggsci)
library(scales)

x <- data.frame(
    cell   = c("A", "A", "B", "B", "C", "C"),
    sample = c("A1", "A2", "B1", "B2", "C1", "C2"),
    weight = c(0.38, 0.23, 0.11, 0.12, 0.17, 0.56)
)

g <- ggplot(x, aes(x = cell, y = weight, fill = sample))
g <- g + geom_bar(stat = "identity", position = "fill")
g <- g + scale_y_continuous(labels = percent)
g <- g + scale_fill_nejm()
plot(g)
ggplot2による積み上げ棒グラフの描画

横並びの棒グラフ

棒グラフをすべて横並びで描くときは、次のように geom_bar 関数の position 引数で指定する。

library(ggplot2)
library(ggsci)

x <- data.frame(
    cell   = c("A", "A", "B", "B", "C", "C"),
    sample = c("A1", "A2", "B1", "B2", "C1", "C2"),
    weight = c(0.32, 0.33, 0.21, 0.22, 0.37, 0.36)
)

g <- ggplot(x, aes(x = cell, y = weight, fill = sample))
g <- g + geom_bar(stat = "identity", position = "dodge")
g <- g + scale_fill_nejm()
plot(g)
ggplot2による横並びの棒グラフの描画

棒グラフにエラーバーを追加する方法

棒グラフを geom_bar で描き、エラーバーを geom_error で描く。ただし、棒グラフの高さとなる平均値とエラーバーの高さである標準偏差を、あらかじめ計算しておく必要がある。

library(reshape2)
library(ggplot2)
library(ggsci)
 
data <- data.frame(
  A = rnorm(20, 10, 4), 
  B = rnorm(20, 20, 2), 
  C = rnorm(20, 15, 3)
)

f <- data.frame(
  group = colnames(data),
  mean  = apply(data, 2, mean),
  sd    = apply(data, 2, sd)
)

head(f)
##   group     mean       sd
## A     A 11.89627 3.418593
## B     B 20.40094 1.739639
## C     C 15.11086 2.408412
 
g <- ggplot(f, aes(x = group, y = mean, fill = group))
g <- g + geom_bar(stat = "identity")
g <- g + geom_errorbar(aes(ymin = mean - sd, ymax = mean + sd, width = 0.3))
g <- g + scale_fill_nejm() 
plot(g) 
棒グラフとエラーバー