前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R语言ggplot2堆积柱形图添加误差线的简单小例子

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

作者头像
用户7010445
发布2021-08-31 17:48:15
3.1K0
发布2021-08-31 17:48:15
举报

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

完整代码

代码语言:javascript
复制
'''
堆积柱形图添加误差线
'''
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 用来配色
读取数据,查看前六行
代码语言:javascript
复制
df<-read.csv("penguins.csv")
head(df)
按照种类和性别分组计算平均值和标准差
代码语言:javascript
复制
df %>% na.omit() %>% 
  group_by(species,sex) %>% 
  summarise(mean_value=mean(bill_length_mm),
            sd_value=sd(bill_length_mm)) -> df1

df1
给数据集添加新的一列用来控制误差线的位置
代码语言:javascript
复制
df1 %>% 
  group_by(species) %>% 
  mutate(new_col=cumsum(mean_value)) -> df2
给映射颜色的变量赋予水平 (这个地方我一时还想不到如何解释,大家可以想一下为啥有这一步)
代码语言:javascript
复制
df2$sex<-factor(df2$sex,
                levels = c("male","female"))
接下来就是画图代码了
代码语言:javascript
复制
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、生物信息学入门学习资料及自己的学习笔记!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-08-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小明的数据分析笔记本 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 完整代码
  • 最终结果
  • 首先是准备数据
  • 解释代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档