想做一個(gè)簡單的分組折線圖,并添加誤差棒,類似下面這樣的:

image.png
用ggplot似乎很簡單就能實(shí)現(xiàn):
ggplot+geom_errorbar+geom_line+geom_point,重點(diǎn)在于計(jì)算誤差棒。還是看示例數(shù)據(jù)吧:

image.png
Type是轉(zhuǎn)錄和蛋白兩個(gè)組學(xué),Region是某個(gè)組織的不同區(qū)域。想作如上圖的樣子,即不同區(qū)域在兩個(gè)組學(xué)的折線圖分布。
計(jì)算誤差需要安裝Rmisc包中的summarySE函數(shù)。
# summarySE 計(jì)算標(biāo)準(zhǔn)差和標(biāo)準(zhǔn)誤差以及95%的置信區(qū)間.
library(Rmisc)
tgc <- summarySE(df2, measurevar="Abundance", groupvars=c("Type","Region"))
數(shù)據(jù)變成這樣:

image.png
接下來就是作圖了。
# 帶有標(biāo)準(zhǔn)誤差線的折線圖
# Standard error of the mean
ggplot(tgc, aes(x=Region, y=Abundance, colour=Type)) +
geom_errorbar(aes(ymin=Abundance-se, ymax=Abundance+se), width=.1) +
geom_line() +
geom_point()
得到警告:

image.png
圖是這樣的,線沒有畫出來。

image.png
查了下網(wǎng)上的答案:https://blog.csdn.net/tanzuozhev/article/details/51106089
它的數(shù)據(jù)形式幾乎和我的一樣,但是卻能正常畫出來。
我想了想,是不是分組變量Type和Region沒設(shè)為因子,但是設(shè)了還是一樣。
查了下錯(cuò)誤,說是要映射group,令group=1。https://stackoverflow.com/questions/27082601/ggplot2-line-chart-gives-geom-path-each-group-consist-of-only-one-observation
我這里設(shè)置了兩組,用group=1或2顯然不行,于是將group映射到變量:
ggplot(tgc, aes(x=Region, y=Abundance, colour=Type, group=Type)) +
geom_errorbar(aes(ymin=Abundance-se, ymax=Abundance+se), width=.1) +
geom_line() +
geom_point()
果然解決了

image.png
但我還是不明白,為啥網(wǎng)上的示例同樣是兩個(gè)分組變量,不用group也能做出來。