私はdata.frame
:
df <- structure(list(sample = structure(c(1L, 1L, 1L, 1L, 2L, 2L, 2L,
2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L), .Label = c("A",
"B", "C"), class = "factor"), replicate = c(1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L),
treatment = structure(c(1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L,
2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L), .Label = c("V0",
"V2", "V4", "V6"), class = "factor"), mean = c(72.5, 66.4,
60.3, 56.3, 90.7, 86.9, 68.8, 64.6, 73.3, 69.8, 62.3, 68.7,
77.1, 73.6, 65.9, 65.3, 75.7, 73.8, 65.9, 66.8), sd = c(5.4,
6.1, 3.5, 4.7, 1.2, 4.9, 8.4, 6.1, 7.3, 3.5, 5.9, 2.2, 3.2,
3, 3.1, 4.2, 4.2, 2.4, 2.2, 2.6)), .Names = c("sample", "replicate",
"treatment", "mean", "sd"), class = "data.frame", row.names = c(NA,
-20L))
一部のサンプルでは複製がありますが、他のサンプルでは複製がありません。
> head(df, 15)
sample replicate treatment mean sd
1 A 1 V0 72.5 5.4
2 A 1 V2 66.4 6.1
3 A 1 V4 60.3 3.5
4 A 1 V6 56.3 4.7
5 B 1 V0 90.7 1.2
6 B 1 V2 86.9 4.9
7 B 1 V4 68.8 8.4
8 B 1 V6 64.6 6.1
9 C 1 V0 73.3 7.3
10 C 1 V2 69.8 3.5
11 C 1 V4 62.3 5.9
12 C 1 V6 68.7 2.2
13 C 2 V0 77.1 3.2
14 C 2 V2 73.6 3.0
15 C 2 V4 65.9 3.1
sample
各値のファセット棒グラフに平均をプロットしたいと思います。複製が1より大きい場合にグループ化されたバーを取得したいのですが、ggplot2で可能ですか?
私がこれまでに得たもの:
g <- ggplot(df, aes(x=treatment, y=mean, fill=sample))
g <- g + geom_bar(position="dodge")
g <- g + geom_errorbar(aes(ymax=mean+sd, ymin=mean-sd), position="dodge")
g <- g + facet_grid(. ~ sample)
g
編集
@Tyler Rinkerの提案に従って、私は次のようになります。
g <- ggplot(df, aes(x=treatment, y=mean, fill=replicate))
g <- g + geom_bar(position="dodge", stat="identity")
g <- g + geom_errorbar(aes(ymax=mean+sd, ymin=mean-sd), position="dodge", width=0.25)
g <- g + facet_grid(. ~ sample)
ただし、「C」サンプル複製のバーを並べて表示したいと思います。
EDIT2に非常に近い...
group
=を追加するだけreplicate
です::
g <- ggplot(df, aes(x=treatment, y=mean, group=replicate, fill=replicate))
g <- g + geom_bar(position="dodge", stat="identity")
g <- g + geom_errorbar(aes(ymax=mean+sd, ymin=mean-sd), position="dodge", width=0.25)
g <- g + facet_grid(. ~ sample)
ただし、エラーバーの位置には問題が残っています。私はかわすと遊ぶ必要があると思いますか?しかし、私は方法がわかりません...
EDIT3最終的に...@joranに感謝します
dodge <- position_dodge(width = 0.9)
0.9以外の値では、エラーバーが正しく配置されないことを確認しました
g <- ggplot(df, aes(x=treatment, y=mean, group=replicate, fill=replicate))
g <- g + geom_bar(position="dodge", stat="identity")
g <- g + geom_errorbar(aes(ymax=mean+sd, ymin=mean-sd), position=dodge, width=0.25, color="black")
g <- g + facet_grid(. ~ sample)