大家好,今天主要向大家分享下误差柱形图的三种可视化方法,先上个示例图:

正式介绍实现方法之前,我们先来了解下误差柱形图上的帽子到底是个什么东东,也就是先了解下涉及的三个统计概念。

1 三个概念

标准偏差(Standard Deviation,SD)

标准偏差(简称标准差)是样本平均数方差的开平方。它反映组内个体间的离散程度。标准差通常是相对于样本数据的平均值而定的,通常用M±SD来表示样本数据观察值和平均值的差距。从公式可以看出,标准差会受到极值的影响。标准差越小,表明数据越聚集;标准差越大,表明数据越离散。Excel中如何用函数实现,请参考【Excel实现】部分

# R 语言实现函数
sd <- sd(vec)
sd <- sqrt(var(vec))

标准误差(Standard Error,SE)

标准误差(简称标准误)表示的是抽样的误差。因为从一个总体中可以抽取出无数多种样本,每一种样本的数据都是对总体的数据的估计。标准误代表的就是当前的样本对总体数据的估计,标准误是由样本的标准差除以样本容量的开平方来计算的。从公式可以看到,标准误更大的是受到样本容量的影响。样本容量越大,标准误越小,那么抽样误差就越小,就表明所抽取的样本能够较好地代表总体。

se = sd(vec) / sqrt(length(vec))

置信区间(Confidence Interval,CI)

所谓置信区间就是分别以统计量的置信上限和置信下限为上下界构成的区间,是这个参数的真实值在一定概率条件下落在测量结果周围的程度。

# R 语言实现
alpha=0.05
t=qt((1-alpha)/2 + .5, length(vec)-1)   # tend to 1.96 if sample size is big enough
CI=t*se

2 Excel 实现

本实例所示数据如下,依次为处理方案(Treat)、分组类别(Group)、平均值(Mean)和标准偏差(SD)。

标准偏差可以参照下图所示函数(STDEV.S())进行计算

绘图步骤:选中前三列数据,依次选择【插入→柱状图】,生成柱状图后点击右上图标添加按钮,添加误差线。在弹出的参数框中,选择【更多选项→误差量→自定义】,选择第四列的SD值,即可绘制误差线。另外根据需要,还可以在误差线里面选择只显示“正偏差”。

3 R 语言实现

# 加载需要的包
library(plyr)
library(ggplot2)# 读取数据
dat <- read.delim("data.txt")# 定义计算平均值和标准差函数
dat_sd <- function(data, varname, groupnames){sum_func <- function(x, col){c(Mean = mean(x[[col]], na.rm=TRUE),SD = sd(x[[col]], na.rm=TRUE))}data_sum<-ddply(data, groupnames, .fun=sum_func,varname)#data_sum <- rename(data_sum, c("mean" = varname))return(data_sum)
}
# 计算标准偏差
df <- dat_sd(dat,varname="Value", groupnames=c("Treat","Group"))
# 作图
p<- ggplot(df, aes(x=Treat, y=Mean, fill=Group)) + geom_bar(stat="identity", color="black", position=position_dodge()) +geom_errorbar(aes(ymin=Mean-SD, ymax=Mean+SD), width=.5,position=position_dodge(.9))

4 Python 语言实现

import numpy as np
import seaborn as sns
import matplotlib.pyplot as pltsize = 3
x = np.arange(size)
a = [5, 10, 23]
a_SD = [1.1, 0.6, 1.4]
b = [6, 9, 10]
b_SD = [0.4, 1.2, 2.5]total_width, n = 0.6, 2
width = total_width / n
x = x - (total_width - width) / 2
labels = ['Treat1', 'Treat2', 'Treat3']plt.bar(x, a,  width=width, yerr = a_SD, tick_label=labels, label='Control')
plt.bar(x + width, b, width=width, yerr = b_SD, tick_label=labels ,label='Experimental')plt.legend()
plt.show()sns.set_theme(style="whitegrid")
tips = sns.load_dataset("tips")
ax = sns.barplot(x="day", y="tip", data=tips, capsize=.2)
ax


5 云平台实现

本人经常使用的是基因云平台(https://www.genescloud.cn),进入基因云平台【云图汇→误差柱状图】工具,在【图表数据→文件上传】页面选择数据文件后,点击“提交绘图”,即可生成误差柱状图。进入【图表调整】页面,**可以实现颜色填充、图案填充等多种类型图表的随意切换,分组/样品的任意删减和排序,以及近百种样式的自由调整。

基因云平台(https://www.genescloud.cn)除了上述误差柱状图,还提供了断轴柱状图、彩带柱状图。进入云图汇总览,搜索“柱状图”,可以查看近10种不同类型的柱状图。有兴趣的小伙伴可以前去溜溜~

交互断轴柱状图

交互带状条形图

极坐标柱状图

误差柱状图的三种实现方法相关推荐

  1. 图形编程中,旋转的三种表示方法

    图形编程中,旋转的三种表示方法分别是:矩阵.欧拉角和四元数. 本文总结这三种表示方法的特点: 性质 矩阵 欧拉角 四元数 在坐标系间转换 能 不能 不能 连续或增量旋转 能,但是转换速度慢 不能 能, ...

  2. PHP开发之递归算法的三种实现方法

    递归算法对于任何一个编程人员来说,应该都不陌生.因为递归这个概念,无论是在PHP语言还是Java等其他编程语言中,都是大多数算法的灵魂.对于PHP新手来说,递归算法的实现原理可能不容易理解.但是只要你 ...

  3. 黑马程序员_Java解析网络数据流的三种特殊方法

    Java解析网络数据流的三种特殊方法 Java作为最开放的语言,已越来越受到网络程序员的青睐.但这一青睐族有着同样的经历--曾经都为网络上通信的Java数据格式而烦恼. 笔者也不例外,曾经为此而查阅了 ...

  4. Oracle的join默认为,Oracle中的三种Join方法详解

    这里将为大家介绍Oracle中的三种Join方法,Nested loop join.Sort merge join和Hash join.整理出来以便帮助大家学习. 基本概念 Nested loop j ...

  5. python中保留小数_python保留小数位的三种实现方法

    前言 保留小数位是我们经常会碰到的问题,尤其是刷题过程中.那么在python中保留小数位的方法也非常多,但是笔者的原则就是什么简单用什么,因此这里介绍几种比较简单实用的保留小数位的方法: 方法一:fo ...

  6. oracle hash join outer,CSS_浅谈Oracle中的三种Join方法,基本概念 Nested loop join: Outer - phpStudy...

    浅谈Oracle中的三种Join方法 基本概念 Nested loop join: Outer table中的每一行与inner table中的相应记录join,类似一个嵌套的循环. Sort mer ...

  7. lopa分析_【风险分析方法】HAZOP、LOPA和FMEA三种分析方法,如何做到信息共享?...

    导 读 信息是人们对事物的了解的不确定性的减少或消除,其功能是表征物质客体成分,结构,状态,特性等属性.信息共享的目的在于减少或消除信息源所需的不确定性.石油化工行业由于设备多,生产过程复杂,危险元素 ...

  8. php怎么四舍五入,php 四舍五入的三种实现方法

    这篇文章主要为大家详细介绍了php 四舍五入的三种实现方法,具有一定的参考价值,可以用来参考一下. 对php 四舍五入的三种方法感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧! php 四 ...

  9. java map集合遍历方法,Java的Map集合的三种遍历方法

    集合的一个很重要的操作---遍历,学习了三种遍历方法,三种方法各有优缺点~~ 1. package com.myTest.MapText; import java.util.Collection; i ...

  10. for-forEach-stream.forEach三种遍历方法

    java8新出的循环方式,在网上有大量的道友说用流的方式效率反而更低了. 大量的结论表明,这种方式只是语法糖(for-forEach-stream三种遍历方法执行效率比较与选用思考 - ZZY1078 ...

最新文章

  1. 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和
  2. leetcode 43. 字符串相乘(Multiply Strings)
  3. 列表-列表统计及删除方法扩展
  4. php清空html_php怎么清除html代码
  5. 爬虫 404 try_和我一起学爬虫
  6. P2336-[SCOI2012]喵星球上的点名【SA,树状数组】
  7. 在Windows下不使用密码远程登陆Linux
  8. div.php织梦自定义表判断不能为空,织梦使用if判断某个字段是否为空
  9. Java 3 年,25K 多吗?
  10. Mac编译OpenJDK8:configure: error: Xcode 4 is required to build JDK 8, the version found was 10.1config
  11. 非线性控制4——李雅普诺夫稳定性理论
  12. mobi格式转换成pdf格式
  13. 多维空间:对于一维到七维的理解
  14. 在VScode上使用latex编辑pdf
  15. iOS系统的设备怎么装两个微信?
  16. 华为应用市场AGC研习社|如何提升投放转化,实现获量增长?
  17. 一句话就能把你逗乐的经典笑话
  18. linux格式化TF卡工具
  19. fruit machine
  20. 电信 802.1p 设置_手机SIM卡怎么设置密码

热门文章

  1. win10中计算机是英文的,如何解决Win10启动和登陆界面语言中英文混合显示?
  2. 学生上课睡觉班主任怎么处理_学生上课睡觉,老师该怎么处理? | 实操课103
  3. html上下两个箭头符号怎么打出来,往返双箭头符号怎么打
  4. 【bsauce读论文】 Playing for K(H)eaps: Understanding and Improving Linux Kernel Exploit Reliability
  5. 病毒木马查杀实战第011篇:QQ盗号木马之专杀工具的编写
  6. 看雪CTF-MISC类型题之巍然不动
  7. HDU 5519(Kykneion asma-NNT+CRT)
  8. 字体设计符号组合多功能微信小程序源码
  9. oracle12c安全补丁包,Oracle 12c 及以上版本补丁更新说明及下载方法
  10. 怎么用静图做gif动图?三步教你轻松做动图