美文网首页
R语言ggplot2堆积柱形图添加误差线的简单小例子

R语言ggplot2堆积柱形图添加误差线的简单小例子

作者: 小明的数据分析笔记本 | 来源:发表于2021-08-20 10:43 被阅读0次

    最近有人在公众号后台留言问到这个问题,今天的推文介绍一下ggplot2做堆积柱形图并添加误差线的办法

    完整代码

    '''
    堆积柱形图添加误差线
    '''
    getwd()
    
    library(ggplot2)
    library(dplyr)
    library(see)
    
    df<-read.csv("penguins.csv")
    head(df)
    
    
    df %>% na.omit() %>% 
      group_by(species,sex) %>% 
      summarise(mean_value=mean(bill_length_mm),
                sd_value=sd(bill_length_mm)) -> df1
    
    df1
    
    df1 %>% 
      group_by(species) %>% 
      mutate(new_col=cumsum(mean_value)) -> df2
    
    df2$sex<-factor(df2$sex,
                    levels = c("male","female"))
    
    ggplot(data=df2,aes(x=species,
                        y=mean_value,
                        fill=sex))+
      geom_bar(position = "stack",stat="identity")+
      geom_errorbar(aes(ymin=new_col-sd_value,
                        ymax=new_col+sd_value),
                    width=0.1)+
      scale_y_continuous(expand = c(0,0),
                         limits = c(0,100))+
      scale_fill_material_d()+
      theme_bw()+
      labs(x=NULL,y="ABCD")
    

    最终结果

    image.png

    首先是准备数据

    这个是R语言里自带的数据集,我将其写出到一个文件里,部分数据如下

    image.png

    我们只用到其中的三列

    • species 企鹅的种类
    • sex 企鹅的性别
    • bill_length_mm 企鹅嘴的长度

    解释代码

    用到的R语言包
    • ggplot2 画图
    • dplyr 整理数据
    • see 用来配色
    读取数据,查看前六行
    df<-read.csv("penguins.csv")
    head(df)
    
    按照种类和性别分组计算平均值和标准差
    df %>% na.omit() %>% 
      group_by(species,sex) %>% 
      summarise(mean_value=mean(bill_length_mm),
                sd_value=sd(bill_length_mm)) -> df1
    
    df1
    
    给数据集添加新的一列用来控制误差线的位置
    df1 %>% 
      group_by(species) %>% 
      mutate(new_col=cumsum(mean_value)) -> df2
    
    给映射颜色的变量赋予水平 (这个地方我一时还想不到如何解释,大家可以想一下为啥有这一步)
    df2$sex<-factor(df2$sex,
                    levels = c("male","female"))
    
    接下来就是画图代码了
    ggplot(data=df2,aes(x=species,
                        y=mean_value,
                        fill=sex))+
      geom_bar(position = "stack",stat="identity")+
      geom_errorbar(aes(ymin=new_col-sd_value,
                        ymax=new_col+sd_value),
                    width=0.1)+
      scale_y_continuous(expand = c(0,0),
                         limits = c(0,100))+
      scale_fill_material_d()+
      theme_bw()+
      labs(x=NULL,y="ABCD")
    

    画图代码在今天推文的第三条视频中会有介绍,这里就不用文字来解释了

    今天的推文完整示例数据和代码可以在第二条推文的留言区获取(第二条推文是一个广告)

    欢迎大家关注我的公众号

    小明的数据分析笔记本

    小明的数据分析笔记本 公众号 主要分享:1、R语言和python做数据分析和数据可视化的简单小例子;2、园艺植物相关转录组学、基因组学、群体遗传学文献阅读笔记;3、生物信息学入门学习资料及自己的学习笔记!

    相关文章

      网友评论

          本文标题:R语言ggplot2堆积柱形图添加误差线的简单小例子

          本文链接:https://www.haomeiwen.com/subject/hkjabltx.html