柱状图用于反映数值变量的集中趋势,用误差线估计变量的差值统计。理解误差线有助于我们准确的获取柱状图反映的信息,因此打算先介绍一下误差线方面的内容,然后介绍一下利用seaborn库绘制柱状图。

1.误差线的理解

误差线源于统计学,表示数据误差(或不确定性)范围,以更准确的方式呈现数据。当label上有一组采样数据时,一般将这组数据的平均值作为该label上标注的值,而用误差线表示该均值可能的误差范围。误差线可以用标准差(standard deviation,SD)、标准误(standard error,SE)和置信区间表示,使用时可选用任意一种表示方法并作相应说明即可。当label上值有一个数据时,则不需要标注误差线。

  • 标准差

在实际中,总体的标准差总是未知的,我们一般用样本标准差来估计总体标准差,样本标准差定义为

其中为样本均值,则误差线的范围为()

  • 标准误

当多次进行重复采样时,会得到多组数据,每组数据都有一个平均值,这些平均值间是有差异的,尽管在每组数据量较大时,这个差异会比较小,标准误表示的就是平均值的误差范围。可以对标准误做以下估计

                                                                            

其中为样本的标准差,则误差线的范围为()

  • 置信区间

由于bar上标明的值是样本均值,这里实际上是对样本均值进行区间估计得到的置信区间。一般作区间估计时,需要先获知总体的分布,在实际中我们依据样本的数据量来假设其总体的分布。当为大样本数据情况时(一般数据量大于30),假设样本服从正态分布,当数据量较小时(小于30)时假设样本服从-分布。当然,若已知总体分布时则不需要假设,包括接下来均值及标准差的计算,若已知时则不需要对其进行估计。

当总体为正态分布时,误差线的范围为

其中依据区间置信度来计算,C表示置信度(只列出常见的置信度)

当总体为-分布时,误差线的范围为

其中依据置信度及样本自由度(N-1)来计算,一般查询-分布得到

这里以均值的置信区间为例,顺便说一下对置信区间的理解。置信区间(置信度为)是指在重复采集次时,得到的样本均值有次可能落在置信区间内,我们不能对置信区间作如下解读:总体均值有的可能性在置信区间内,这是不对的,在一次采样完成后,按照频率学派的观点,只有“在区间内”、“在区间外”这两种情况,而不能讨论可能性(可能性是贝叶斯学派的观点)。

通过以上的说明,可以获知这样一点内容:当误差线比较“长”时,一般要么是数据离散程度大,要么是数据样本少。

2.利用seaborn.barplot()绘制柱状图

seaborn.barplot()绘图参数的说明为:

  • x:指定label值,可以是一个序列
  • y:对应每个label上的数据,可以是一个序列
  • hue:指定分类变量,其使用示例如下,左图是不使用hue参数时的图形,右图是使用hue的图形
>>> a=np.arange(40).reshape(10,4)
df=pd.DataFrame(a,columns=['a','b','c','d'])
df['a']=[0,4,4,8,8,8,4,12,12,12]
df['d']=list('aabbabbbab')
sns.barplot(x='a',y='b',data=df,hue='d')

     
  • data:使用的数据集。在上面的例子中,当指定"data=df"时,可以在“x=”、"y="处直接使用column名称,否则需要使用"x=data['a']"的形式
  • order,hue_order:order控制bar绘制的顺序,hue_order控制一个bra内每个类绘图顺序,例如分别执行以下代码
>>> sns.barplot(x='a',y='b',data=df,order=[8,4,12,0])  #控制bar绘制顺序,左图
sns.barplot(x='a',y='b',data=df,hue_order=['b','a']) #控制bar绘制顺序,右图

​  

  • estimator:设置每一个label上显示的统计量类型,默认为平均值,可修改为最大值、中位值等。注意,若修改为非平均值,那么前面所提到的误差线都需要做修改,因为前面的误差线解释都是基于平均值的。
  • ci:在seaborn.barplot()中误差线默认表示的是均值的置信区间,因此当ci为(0,100)间的值时表示置信区间的置信度,默认为95;ci还可以取值为'sd',此时误差线表示的是标准误差;当ci取值为None时,则不显示误差线
  • n_boot:计算代表置信区间的误差线时,默认会采用bootstrap抽样方法(在样本量较小时比较有用),该参数控制bootstrap抽样的次数
  • units:该参数的解释我暂时还未弄明白
  • orient:设置柱状图水平绘制还是竖直绘制,"h"表示水平,“v”表示竖直。
  • color:设置bar的颜色,这里似乎用于将所有的bar设置为同一种颜色
  • pattle:调色板,设置bar的以不同颜色显示,所有的颜色选择都要是matplotlib是能识别的颜色
  • saturation:设置颜色的饱和度取值为[0,1]间
  • errcolor:设置误差线的颜色,默认为黑色
  • errwidth:设置误差线的显示线宽
  • capsize:设置误差线顶部、底端处横线的显示长度
  • dodge:当使用分类参数“hue”时,可以通过dodge参数设置是将不同的类分别用一个bar表示,还是在一个bar上通过不同颜色表示,下图总左边是dodge=True,右边是dodge=False,默认为True。

 

  • ax:选择将图形显示在哪个Axes对象上,默认为当前Axes对象
  • kwargs:matplotlib.plot.bar()中其它的参数

返回值:ax,matplotlib.Axes对象

          

seaborn库中柱状图绘制详解的更多相关文章

  1. (转)python标准库中socket模块详解

    python标准库中socket模块详解 socket模块简介 原文:http://www.lybbn.cn/data/datas.php?yw=71 网络上的两个程序通过一个双向的通信连接实现数据的 ...

  2. boost库中sleep方法详解

    博客转载自:https://blog.csdn.net/huang_xw/article/details/8453506 boost库中sleep有两个方法: 1. 这个方法只能在线程中用, 在主线程 ...

  3. Clipper库中文文档详解

    简介 Clipper Library(以下简称为Clipper库或ClipperLib或Clipper)提供了对线段和多边形的裁剪(Clipping)以及偏置(offseting)的功能 和其他的裁剪 ...

  4. boost库中thread多线程详解2——mutex与lock

    1. mutex对象类 mutex类主要有两种:独占式与共享式的互斥量.▲ 独占式互斥量:mutex: 独占式的互斥量,是最简单最常用的一种互斥量类型try_mutex: 它是mutex的同义词,为了 ...

  5. python标准库中socket模块详解

    包含原理就是tcp的三次握手 http://www.lybbn.cn/data/datas.php?yw=71 这篇讲到了socket和django的联系 https://www.cnblogs.co ...

  6. Python中第三方库Requests库的高级用法详解

    Python中第三方库Requests库的高级用法详解 虽然Python的标准库中urllib2模块已经包含了平常我们使用的大多数功能,但是它的API使用起来让人实在感觉不好.它已经不适合现在的时代, ...

  7. oracle中imp命令详解 .

    转自http://www.cnblogs.com/songdavid/articles/2435439.html oracle中imp命令详解 Oracle的导入实用程序(Import utility ...

  8. View绘制详解(五),draw方法细节详解之View的滚动/滑动问题

    关于View绘制系列的文章已经完成了四篇了,前面四篇文章主要带小伙伴们熟悉一下View的体系的整体框架.View的测量以及布局等过程,从本篇博客开始,我们就来看看View的绘制过程.View的绘制涉及 ...

  9. View绘制详解(四),谝一谝layout过程

    上篇博客我们介绍了View的测量过程,这只是View显示过程的第一步,第二步就是layout了,这个我们一般译作布局,其实就是在View测量完成之后根据View的大小,将其一个一个摆放在ViewGro ...

随机推荐

  1. day14 Pyhton学习

    一.迭代器-概念 可迭代协议:内部含有__iter__方法的值/变量都是可迭代的 如何得到一个迭代器:可迭代变量.__iter__()返回一个迭代器 迭代器协议:内部含有__iter__方法和__ne ...

  2. 并查集算法Union-Find的思想、实现以及应用

    并查集算法,也叫Union-Find算法,主要用于解决图论中的动态连通性问题. Union-Find算法类 这里直接给出并查集算法类UnionFind.class,如下: /** * Union-Fi ...

  3. 理解 PHP 依赖注入 和 控制反转

    理解 PHP 依赖注入 和 控制反转   要想理解 PHP 依赖注入 和 控制反转 两个概念,就必须搞清楚如下的两个问题: DI -- Dependency Injection 依赖注入 IoC -- ...

  4. D - 活动选择

    Description 学校的大学生艺术中心周日将面向全校各个学院的学生社团开放,但活动中心同时只能供一个社团活动使用,并且每一个社团活动开始后都不能中断.现在各个社团都提交了他们使用该中心的活动计划 ...

  5. C++学习笔记---数据类型

    1.整型 C++中能够表示整型的类型有几下几种方式,区别在于所占内存空间不足 数据类型 占用空间 取值范围 short(短整型) 2字节 (-2^15~2^15-1) int(整型) 4字节 (-2^ ...

  6. python第三章:函数

    在前面章节中,介绍了一些input(),print(),len()等内建函数,还有random,math等标准库相关函数,这些都是可以直接使用的,但是很多时候,我们也是可以编写自己的函数. 看个例子: ...

  7. 51nod 最大M子段和系列(1052、1053、1115)

    51nod1052 数据量小,可使用O(N*M)的DPAC,递推公式: dp[i][j]=max(dp[i-1][j-1], dp[i][j-1])+a[j]; dp[i][j]表示前j个数取 i 段 ...

  8. CTCall简介(后续会继续补充)

    使用CTCall需要导入CoreTelephony.framework框架. CTCall的基本使用 (1)初始化call CFStringRef number = CFSTR("15555 ...

  9. offer_JZ25

    offer_JZ25 题目:输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针random指向一个随机节点),请对此链表进行深拷贝,并返回拷贝后的头结点.(注意,输 ...

  10. mysql 改变表结构 alter

    总结:alter添加栏位时,只需记住添加新栏位为第一列,用first;添加其他用,after 前一个栏位字段,如下例 1.需求:将新的栏位添加为第二列 添加前: 添加后: 参考:http://www. ...