你需要堆叠柱状图添加bar吗?

年底了,各种事情都在排队去做,造成的后果就是时间像流水一下迅速过去了,抽出一点时间做点学习成了奢求,前两天在微生信生物群0中讨论了一个如何对堆叠柱状图添加误差线问题,类似下面的图片:额。画质真烂!我使用R语言简单实现了一下,这里希望能为大家做个借鉴。

其实这个实现很简单,就像我们对堆叠柱状图添加标签一样,只不过这里添加的是bar。这里核心步骤只有两条第一是构造误差线的坐标,我们使用函数:ddply(df_res,"Attribute",transform,label_y = cumsum(Mean ));第二个是重新排布堆叠柱状图不同分组因子水平,保证按照正确的方向填充:factor(df_res$Species,levels = c("virginica","versicolor","setosa"  ))。这两条做好之后我们就可以出图了。


## 导入包library(ggplot2)library(reshape2)library(RColorBrewer)library(plyr)

## 载入数据,这里是默认的鸢尾花数据df <- iris#数据宽边长df <- melt(df, id="Species", variable.name="Attribute", value.name = "Size")#设置出图颜色mycol= brewer.pal(n = 12, name = "Set3")

## 数据统计均值、标准差、标准误mean <- aggregate(df$Size, by=list(df$Species, df$Attribute), FUN=mean)sd <- aggregate(df$Size, by=list(df$Species, df$Attribute), FUN=sd)len <- aggregate(df$Size, by=list(df$Species, df$Attribute), FUN=length)df_res <- data.frame(mean, sd=sd$x, len=len$x)colnames(df_res) = c("Species", "Attribute", "Mean", "Sd", "Count")head(df_res)df_res$Se <- df_res$Sd/sqrt(df_res$Count) ### 计算标准差
#构造误差线坐标df_res1 = ddply(df_res,"Attribute",transform,label_y = cumsum(Mean ))head(df_res1)#因子重新排列df_res1$Species = factor(df_res$Species,levels = c("virginica","versicolor","setosa" ))
### ggplot 绘图ggplot(df_res1, aes(x=Attribute, y=Mean, fill=Species)) + geom_bar(stat="identity",color="black", width=.6) + scale_fill_manual(values = mycol) + geom_errorbar(aes(ymin=label_y-Sd, ymax=label_y +Sd), width=.2)

其实这个图片在比较少的柱子中还可以看出来误差线,如果数据不好,想必会有大量误差线重叠,并影响最终效果。使用起来还是需要评估适用范围。

(0)

相关推荐

  • 初识scrapy爬虫框架

    框架是为了解决特定的业务场景而开发的一套高质量代码,通过框架避免了重复造轮子的低效模式,可以更加专注于具体业务相关的代码.在python中,scrapy就是一个主流的爬虫框架,可以通过如下方式进行安装 ...

  • r语言ggplot2误差棒图快速指南

    原文链接:http://tecdat.cn/?p=5506 给直方图和线图添加误差棒 准备数据 这里使用ToothGrowth 数据集. library(ggplot2)  df <- Toot ...

  • 蚂蚁金服在线可视化引擎 G2

    R绘图往期回顾 R绘图 ggpubr: 为学术而生 R绘图 ggsci: 高大上的论文配色,一文解决配色问题 R绘图:相关性分析与作图 R绘图:相关性分析与作图(单基因相关性) TCGA数据分析系列之 ...

  • 成功解决AttributeError: ‘Series‘ object has no attribute ‘name’

    成功解决AttributeError: 'Series' object has no attribute 'name' 解决问题 AttributeError: 'Series' object has ...

  • EasyStat新功能添加-堆叠柱状图展示差异-显著性字母标记

    写在前面 这种堆叠柱状图的方式展示对于我们微生物组数据十分重要,所以我加入了这种方式,但是我们知道目前大部分的堆叠柱状图展示物种丰度都是不添加显著性标记的,这里我们更进一步,给他添加上显著性标记,使用 ...

  • 分类堆叠柱状图顺序排列及其添加合适条块标签

    堆叠柱状图顺序排列及其添加合适条块标签 Tao Wen 2018年12月17日 写在前面:人生嘛,不就是这样,总会有高兴和不高兴,积极和消沉嘛!即便晚上过成了白天,白天过成了晚上.但事情总会过去,有缺 ...

  • 微生物门类堆叠柱状图-冲击图-在R4.0更新版本

    写在前面2020年12月 在R4.0 更新后,我之前的barMainplot函数中冲击图部分不能很好地运行,是由于dplyr版本更新后产生的问题,我将这部分做了更新,并且将颜色等映射去除,方便大家在出 ...

  • 堆叠柱状图也要做统计-标记显著性

    写在前面 有时候我们展示的指标有一定的关系,希望可以使用堆叠柱状图展示.许多朋友们问询,这样如何添加显著性标记,因此本期结合EasyStat包给大家做一个演示. R 包导入 ## 导入包 librar ...

  • 关于微生物门类堆叠柱状图,你知道的并不够

    写在前面 无论是堆叠柱状图,还是近年来会扩展的冲击图.基本都只能对门水平物种多样性进行可视化.然而即使是门水平,也不一定是全部的样本都适合使用堆叠柱状图可视化. 尤其是土壤等复杂的微生物群落的环境,往 ...

  • 微生信生物新年放大招:一条代码完成堆叠柱状图-冲击图的操作-终结版

    00. 写在前面 眼下2019年的余额不足一天了,2020年最终还是要到来,首先祝愿大家元旦快乐,其次新的一年祝大家心想事成.说实在的最近老是想出去玩,哈哈哈,文章还没写完,不可以!不可以! 这只是大 ...

  • 环状堆叠柱状图展示物种丰度信息-基于大量测序样本

    写在前面 堆叠柱状图做成环状,得益于Y叔的ggtreextra,因为我不仅仅要做成环状,还要添加聚类模块.所以就不太好办了.这种展示在样本很少的情况下其实不是很好,但是当样本很多的时候,尤其是上百哥, ...

  • origin柱状图:一个图层实现“嵌套+堆叠”

    写在前面: 目标是做出下面这个图. 分析:总氮是一个柱子,内部嵌套一个堆积柱状图. 图中信息: ①总氮>三种形态氮的总和,可能有其他形态氮存在,比如有机氮: ②所有形态氮及总氮浓度随时间降低: ...

  • ggplot2绘图学习 一文带你掌握如何添加各种bar

    之前我们学习了ggplot绘制单变量,两个连续变量的图形,两个离散型变量.对于一个离散型变量,一个连续型变量,有很多作图方式,包括箱图,点图等等 · geom_boxplot() for box pl ...