をSDにポイントは、私は、次のようなプロットを構築したいと思います:ggplot2:平均表現するために、個々の観察やバーを表し、
個々の観察は点として表現される、それぞれの平均グループは線分として表され、2つの他の線分は平均+/- sdを示す。上記のプロットは、geom_crossbar
を使ってセグメントを描画するコードを使って生成することができました。しかし、これはハックのように感じます。私はggplot2
を新しくしています。私が望むものを達成するためのより良い方法があるのだろうかと思います。
library(ggplot2); library(dplyr)
theme_set(theme_bw(base_size=12, base_family="Helvetica"))
dat = data.frame(y=rnorm(10), treat=rep(c("A", "B"), each=5))
summData = dat %>% group_by(treat) %>% summarize(mean_y=mean(y), sd_y=sd(y))
summData$lower = summData$mean_y-summData$sd_y
summData$upper = summData$mean_y+summData$sd_y
mBarWidth = 0.5; sdBarWidth = 0.3
mBarSize = 2; sdBarSize = 0.8
barColor = adjustcolor("grey10", alpha.f=0.4)
p = ggplot()
p = p + geom_point(data=dat, aes(x=treat, y=y), color="skyblue")
p = p + geom_crossbar(data=summData, aes(x=treat, y=lower, ymin=lower, ymax=lower), width=sdBarWidth, color=barColor, fatten=1, size=sdBarSize)
p = p + geom_crossbar(data=summData, aes(x=treat, y=mean_y, ymin=mean_y, ymax=mean_y), width=mBarWidth, color=barColor, fatten=1, size=mBarSize)
p = p + geom_crossbar(data=summData, aes(x=treat, y=upper, ymin=upper, ymax=upper), width=sdBarWidth, color=barColor, fatten=1, size=sdBarSize)
p = p + xlab("Treatment") + ylab("Response")
おかげで、しかし、セグメントがポイントの代わりに平均を示すようにしたいと思います。また、平均+/- sdを示す上下のバーが垂直線で接続されていないことを望みます。 – sam81