r语言ggplot2误差棒图快速指南
原文链接:http://tecdat.cn/?p=5506
给直方图和线图添加误差棒
准备数据
这里使用ToothGrowth 数据集。
library(ggplot2)
df <- ToothGrowth
df$dose <- as.factor(df$dose)
head(df)
## len supp dose ## 1 4.2 VC 0.5 ## 2 11.5 VC 0.5 ## 3 7.3 VC 0.5 ## 4 5.8 VC 0.5 ## 5 6.4 VC 0.5 ## 6 10.0 VC 0.5len :牙齿长度
dose : 剂量 (0.5, 1, 2) 单位是毫克
supp : 支持类型 (VC or OJ)
在下面的例子中,我们将绘制每组中牙齿长度的均值。标准差用来绘制图形中的误差棒。
首先,下面的帮助函数会用来计算每组中兴趣变量的均值和标准差:
#+++++++++++++++++++++++++
# 计算每个组的均值和标准差 #+++++++++++++++++++++++++
# data : a data frame
# varname : 包含变量的列名
#要汇总的 #groupnames : 列名的向量,作为#分组变量使用
data_summary <- function(data, varname, groupnames){ summary_func <- function(x, col){
c(mean = mean(x\[\[col\]\], na.rm=TRUE), sd = sd(x\[\[col\]\], na.rm=TRUE)) }
data\_sum<-ddply(data, groupnames, .fun=summary\_func, varname)
data\_sum <- rename(data\_sum, c("mean" = varname))
return(data_sum)
}
统计数据
df2 <- data_summary(ToothGrowth, varname="len", groupnames=c("supp", "dose"))
# 把剂量转换为因子变量
df2$dose=as.factor(df2$dose) head(df2)
## supp dose len sd ## 1 OJ 0.5 13.23 4.459709 ## 2 OJ 1 22.70 3.910953 ## 3 OJ 2 26.06 2.655058 ## 4 VC 0.5 7.98 2.746634 ## 5 VC 1 16.77 2.515309 ## 6 VC 2 26.14 4.797731 有误差棒的直方图
函数 geom_errorbar()可以用来生成误差棒:
p<- ggplot(df2, aes(x=dose, y=len, fill=supp)) + geom\_bar(stat="identity", color="black", position=position\_dodge()) + geom_errorbar(aes(ymin=len-sd, ymax=len+sd),)
print(p) # 条形图
文章图片
文章图片
你可以选择只保留上方的误差棒:
#只保留上部的误差条
ggplot(df2, aes(x=dose, y=len, fill=supp)) + geom\_bar(stat="identity", color="black", position=position\_dodge()) + geom_errorbar(aes(ymin=len, ymax=len+sd), width=.2)
【r语言ggplot2误差棒图快速指南】1
文章图片
有误差棒的线图
p<- ggplot(df2, aes(x=dose, y=len, group=supp, color=supp)) position=position_dodge(0.05)) print(p)
#线图
p+labs(title="Tooth length per dose", x="Dose (mg)
文章图片
文章图片
你也可以使用函数 geom\_pointrange() 或 geom\_linerange() 替换 geom_errorbar()
#用 geom_pointrange
geom_pointrange(aes(ymin=len-sd, ymax=len+sd))
# 用 geom\_line()+geom\_pointrange()
geom\_line()+ geom\_pointrange(aes(ymin=len-sd, ymax=len+sd))
文章图片
文章图片
有均值和误差棒点图 使用函数 geom\_dotplot() and stat\_summary() :
文章图片
文章图片
文章图片
平均值+/-SD可以作为误差条或点范围添加。 # 用geom_crossbar()
p + stat\_summary(fun.data="https://www.it610.com/article/mean/_sdl", fun.args = list(mult=1), geom="crossbar", width=0.5)
# 用geom_errorbar()
geom="errorbar", color="red", width=0.2) + stat_summary(fun.y=mean, geom="point", color="red")
# 用geom_pointrange()
summary(fun.data=https://www.it610.com/article/mean_sdl, fun.args = list(mult=1))
推荐阅读
- 【生信技能树】R语言练习题|【生信技能树】R语言练习题 - 中级
- 一起来学习C语言的字符串转换函数
- C语言字符函数中的isalnum()和iscntrl()你都知道吗
- C语言浮点函数中的modf和fmod详解
- C语言中的时间函数clock()和time()你都了解吗
- C语言学习|第十一届蓝桥杯省赛 大学B组 C/C++ 第一场
- C语言解方程的根和判断是否是闰年
- C语言的版本比较
- 【C】题目|【C语言】题集 of ⑥
- echart|echart 双轴图开发