分组柱状图添加误差线(位置)--ggplot2

分组柱状图的绘制可以基于ggplot2,具体可以参考: 分组柱状图--ggplot2 。 如何针对分组柱状图添加误差线并合理调整位置呢?主要基于geom_errorbar及其参数position进行细节调整。 譬如基于上...

分组柱状图的绘制可以基于ggplot2,具体可以参考: 分组柱状图--ggplot2

如何针对分组柱状图添加误差线并合理调整位置呢?主要基于geom_errorbar及其参数position进行细节调整

譬如基于上述链接数据增加一列标准差SD,进行演示:

1、案例数据:

dat
   type  Sample Num  SD
1     A sample1  90 1.0
2     B sample1  34 2.0
3     C sample1  56 1.2
4     D sample1  99 2.0
5     E sample1  15 2.4
6     A sample2  50 1.0
7     B sample2  20 1.0
8     C sample2  24 1.0
9     D sample2  70 1.8
10    E sample2  14 1.5


2、于柱状图上添加geom_errorbar(不控制位置)

针对geom_errorbar设置如下:width是误差线上下端宽度,size是粗细

 geom_errorbar(aes(ymin=(Num-SD),ymax=(Num+SD)),width=0.2,size=0.02)


全部绘图代码如下:

p = ggplot(dat, aes(x = type,y = Num,fill = Sample))+
  #####这部分的position = "dodge",并排肩并肩的柱状图
  geom_bar(stat ="identity",width = 0.6,position = "dodge")+  
  geom_errorbar(aes(ymin=(Num-SD),ymax=(Num+SD)),width=0.2,size=0.02)+
  scale_fill_manual(values = c("red","blue"))+                 #########设定颜色
  labs(x = "",y = "", title = "test")+                        ############坐标标签和图片title
  geom_text(aes(label = dat$Num),position=position_dodge(width = 0.5),size = 5,vjust = -0.25)+ ###########设置柱子上的标签文字,文字的position_dodge(width=0.5)设置,保证分隔宽度。
  guides(fill = guide_legend(reverse = F))+                  ##############图例顺序反转
  theme(plot.title = element_text(size = 25,face = "bold", vjust = 0.5, hjust = 0.5),   ######图片title文字大小位置
        legend.title = element_blank(),                    ##########图例名称为空
        legend.text = element_text(size = 18, face = "bold"),        ##########图例文字大小
        legend.position = 'right',               ############图例位置
        legend.key.size=unit(0.8,'cm'))             #############图例大小

print(p)


结果显示如下:误差线默认位置position="identity",也就是在该组中间,导致组内多个误差线按照高低排布,而不是在对应的柱子中间。

attachments-2018-12-bexE8wdJ5c05ee643d7f9.jpg

3、控制位置position="dodge" 与柱状图位置参数一致

绘图代码如下:

p = ggplot(dat, aes(x = type,y = Num,fill = Sample))+
  #####这部分的position = "dodge",并排肩并肩的柱状图
  geom_bar(stat ="identity",width = 0.6,position = "dodge")+  
  geom_errorbar(aes(ymin=(Num-SD),ymax=(Num+SD)),width=0.2,size=0.02,position = "dodge")+
  scale_fill_manual(values = c("red","blue"))+                 #########设定颜色
  labs(x = "",y = "", title = "test")+                        ############坐标标签和图片title
  geom_text(aes(label = dat$Num),position=position_dodge(width = 0.5),size = 5,vjust = -0.25)+ ###########设置柱子上的标签文字,文字的position_dodge(width=0.5)设置,保证分隔宽度。
  guides(fill = guide_legend(reverse = F))+                  ##############图例顺序反转
  theme(plot.title = element_text(size = 25,face = "bold", vjust = 0.5, hjust = 0.5),   ######图片title文字大小位置
        legend.title = element_blank(),                    ##########图例名称为空
        legend.text = element_text(size = 18, face = "bold"),        ##########图例文字大小
        legend.position = 'right',               ############图例位置
        legend.key.size=unit(0.8,'cm'))             #############图例大小

print(p)


结果如下图,显示组内误差线按照高低并列分布,但并未与柱子匹配正确

attachments-2018-12-sA6G2Nfc5c05f02e89773.jpg

4、控制position=position_dodge(width=0.6), 误差线整体间隔和组内柱子整体宽度width一致

绘图代码如下:

p = ggplot(dat, aes(x = type,y = Num,fill = Sample))+
  #####这部分的position = "dodge",并排肩并肩的柱状图
  geom_bar(stat ="identity",width = 0.6,position = "dodge")+  
  geom_errorbar(aes(ymin=(Num-SD),ymax=(Num+SD)),width=0.2,size=0.02,position = position_dodge(width = 0.6))+
  scale_fill_manual(values = c("red","blue"))+                 #########设定颜色
  labs(x = "",y = "", title = "test")+                        ############坐标标签和图片title
  geom_text(aes(label = dat$Num),position=position_dodge(width = 0.5),size = 5,vjust = -0.25)+ ###########设置柱子上的标签文字,文字的position_dodge(width=0.5)设置,保证分隔宽度。
  guides(fill = guide_legend(reverse = F))+                  ##############图例顺序反转
  theme(plot.title = element_text(size = 25,face = "bold", vjust = 0.5, hjust = 0.5),   ######图片title文字大小位置
        legend.title = element_blank(),                    ##########图例名称为空
        legend.text = element_text(size = 18, face = "bold"),        ##########图例文字大小
        legend.position = 'right',               ############图例位置
        legend.key.size=unit(0.8,'cm'))             #############图例大小

print(p)


结果如下:

attachments-2018-12-ay9GHCGi5c05f0bd25fdb.jpg



如果想提升自己的绘图技能,我们推荐:R语言绘图基础(ggplot2)


更多生物信息课程:

1. 文章越来越难发?是你没发现新思路,基因家族分析发2-4分文章简单快速,学习链接:基因家族分析实操课程基因家族文献思路解读

2. 转录组数据理解不深入?图表看不懂?点击链接学习深入解读数据结果文件,学习链接:转录组(有参)结果解读转录组(无参)结果解读

3. 转录组数据深入挖掘技能-WGCNA,提升你的文章档次,学习链接:WGCNA-加权基因共表达网络分析

4. 转录组数据怎么挖掘?学习链接:转录组标准分析后的数据挖掘转录组文献解读

5. 微生物16S/ITS/18S分析原理及结果解读OTU网络图绘制cytoscape与网络图绘制课程

6. 生物信息入门到精通必修基础课:linux系统使用perl入门到精通perl语言高级R语言入门R语言画图

7. 医学相关数据挖掘课程,不用做实验也能发文章:TCGA-差异基因分析GEO芯片数据挖掘GEO芯片数据标准化GSEA富集分析课程TCGA临床数据生存分析TCGA-转录因子分析TCGA-ceRNA调控网络分析

8.其他,二代测序转录组数据自主分析NCBI数据上传二代测序数据解读


  • 发表于 2018-12-04 11:16
  • 阅读 ( 16366 )
  • 分类:R

0 条评论

请先 登录 后评论
Daitoue
Daitoue

167 篇文章

作家榜 »

  1. omicsgene 702 文章
  2. 安生水 351 文章
  3. Daitoue 167 文章
  4. 生物女学霸 120 文章
  5. xun 82 文章
  6. rzx 78 文章
  7. 红橙子 78 文章
  8. CORNERSTONE 72 文章