本文转载自BioparaMeta,作者凯凯何
本篇推文介绍如何利用R和ggplot2包来制作带误差线的条形图和线图,可以使用如下几个函数制作不同类型的误差线图形:
- geom_errorbar()函数
- geme_linerange()函数
- geom_pointrange()函数
- geom_crossbar()函数
- geom_errorbarh()函数
1. 加载数据集
首先加载数据集,选用ToothGrowth
数据集进行演示,数据集中包括60个观测对象,3个变量。
df head(df) # 查看数据集前六行
![6c14f5cc6955c6f05cca9f769fcf9006.png](https://img-blog.csdnimg.cn/img_convert/6c14f5cc6955c6f05cca9f769fcf9006.png)
数据集中的三个变量分别为:
len: 数字向量,牙齿长度
dose: 剂量,有三种剂量(0.5, 1, 2)
supp : 因子,VC或者橙汁
数据集中的dose为数字向量,需要修改为因子。
df$dose str(df)
![9a7080983830cea387301613bb68f9c2.png](https://img-blog.csdnimg.cn/img_convert/9a7080983830cea387301613bb68f9c2.png)
2. 计算每组Tooth长度的平均值
在下面的例子中,我们将绘制每组Tooth长度的平均值。标准差用于在图表上绘制误差线。
首先,下面写个函数将用于计算每组中感兴趣变量的均值和标准差:
data_summary function(data, varname, groupnames){
require(plyr)
summary_func function(x, col){
c(mean = mean(x[[col]], na.rm=TRUE),
sd = sd(x[[col]], na.rm=TRUE))
}
data_sum varname)
data_sum "mean" = varname))
return(data_sum)
}
这篇推文复杂的地方就是上面这里,数据计算我看着也有点懵。
Ok,我们运用到我们数据里。
df2 "len",
groupnames=c("supp", "dose"))
# 将dose变量转换为因子
df2$dose=as.factor(df2$dose)
head(df2)
![072e662327c012ff2187653369fa6ff1.png](https://img-blog.csdnimg.cn/img_convert/072e662327c012ff2187653369fa6ff1.png)