ggplot2绘制带误差线的折线图(经典版)

本节来介绍如何通过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())