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)
横軸の座標ラベルが長い場合、重なることがある。このとき、次のように theme
関数で、ラベルの回転を調整して、斜めにすることができる。
g <- g + theme(axis.text = element_text(angle = 30))
plot(g)
帯グラフ
棒グラフを横向きにした帯グラフを描くには、まず 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)
積み上げ棒グラフ
積み上げグラフを描く場合、どの項目でグルーピングするのかを指定する必要がある。例えば、次の場合は、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)
積み上げ棒グラフ(割合)
積み上げグラフの縦軸を 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)
横並びの棒グラフ
棒グラフをすべて横並びで描くときは、次のように 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)
棒グラフにエラーバーを追加する方法
棒グラフを 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)