本节来介绍如何通过ggplot2绘制带误差线的折线图,介绍2种方法一种传统方法&经典方法
library(tidyverse) library(ggsci) library(patchwork)
传统方法依然是先整理数据,之后添加相应的几何对象,整个过程规规矩矩,无任何亮点可言
p1 <- ToothGrowth %>% mutate(dose=as.factor(dose)) %>% group_by(dose,supp) %>% summarise(mean=mean(len), se = sqrt(var(len)/length(len)), .groups = 'drop') %>% ggplot(aes(dose,mean)) + geom_line(aes(linetype=supp,group = supp,color=supp))+ geom_point(size=3,aes(color=supp))+ geom_errorbar(aes(ymin = mean-se,ymax =mean+se, group = supp,color=supp), width = 0.05)+ scale_color_nejm()+ theme_bw()+ theme(panel.grid.major=element_blank(), panel.grid.minor=element_blank(), panel.background = element_blank(), legend.key=element_blank())
此方法使用了stat_summary函数,有了它我们再也不需要对数据先进行整理了,使用起来真是事半功倍,关于stat_summary的详细使用方法请参考下面2篇文档
通过ggplot2中stat_summary函数快速进行数据统计
揭开{ggplot2}中stat_图层的神秘面纱p2 <- ToothGrowth %>% mutate(dose=as.factor(dose)) %>% group_by(dose,supp) %>% ggplot(aes(x = dose,y =len, group=supp,color=supp)) + stat_summary(fun.y="mean",geom="point",size=3) + stat_summary(fun.y="mean",geom="line") + stat_summary(fun.data = "mean_se",geom = "errorbar",width=0.05)+ scale_color_nejm()+ theme_bw()+ theme(panel.grid.major=element_blank(), panel.grid.minor=element_blank(), panel.background = element_blank(), legend.key=element_blank())