seaborn库中柱状图绘制详解

柱状图用于反映数值变量的集中趋势,用误差线估计变量的差值统计。理解误差线有助于我们准确的获取柱状图反映的信息,因此打算先介绍一下误差线方面的内容,然后介绍一下利用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对象

          

原文地址:https://www.cnblogs.com/hgz-dm/p/10886309.html

时间: 2024-08-29 21:38:18

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

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

1. mutex对象类 mutex类主要有两种:独占式与共享式的互斥量.▲ 独占式互斥量:mutex: 独占式的互斥量,是最简单最常用的一种互斥量类型try_mutex: 它是mutex的同义词,为了与兼容以前的版本而提供timed_mutex: 它也是独占式的互斥量,但提供超时锁定功能▲ 递归式互斥量:recursive_mutex: 递归式互斥量,可以多次锁定,相应地也要多次解锁recursive_try_mutex: 它是recursive_mutex 的同义词,为了与兼容以前的版本而提供

Apache中https的详解及应用案例

Apache中https的详解及应用案例 一.https的简介 它是一个安全通信通道,它基于HTTP开发,用于在客户计算机和服务器之间交换信息.它使用安全套接字层(SSL)进行信息交换,简单来说它是HTTP的安全版. 它是由Netscape开发并内置于其浏览器中,用于对数据进行压缩和解压操作,并返回网络上传送回的结果.HTTPS实际上应用了Netscape的安全全套接字层(SSL)作为HTTP应用层的子层.(HTTPS使用端口443,而不是象HTTP那样使用端口80来和TCP/IP进行通信.)S

Python中time模块详解

在Python中,与时间处理有关的模块就包括:time,datetime以及calendar.这篇文章,主要讲解time模块. 在开始之前,首先要说明这几点: 在Python中,通常有这几种方式来表示时间:1)时间戳 2)格式化的时间字符串 3)元组(struct_time)共九个元素.由于Python的time模块实现主要调用C库,所以各个平台可能有所不同. UTC(Coordinated Universal Time,世界协调时)亦即格林威治天文时间,世界标准时间.在中国为UTC+8.DST

Linux中pam认证详解(下)

Linux中pam认证详解(下) 在上一篇中详细的介绍了pam的介绍.pam认证原理.pam认证构成以及pam验证控制类型,下面向大家详细介绍一下常用的pam服务模块,以及pam认证的应用. 一.常用的pam服务模块 下面是Linux提供的PAM模块列表(只是其中一部分),这其中包含模块文件.模块功能描述和相关配置文件,具体如下: pam_access 提供logdaemon风格登录控制 /etc/security/access.conf pam_chroot 提供类似chroot命令的功能 p

php学习之道:php中iconv函数 详解

iconv函数库能够完成各种字符集间的转换,是php编程中不可缺少的基础函数库. 用法如下: $string = "亲爱的朋友欢迎访问胡文芳的博客,希望给您带来一点点的帮助!"; iconv("utf8","gbk",$string)//将字符串string  编码由utf8转变成gbk: 扩展如下: echo $str= '你好,欢迎访问胡文芳的博客,该博客记录一个程序员的成长过程!'; echo ' '; echo iconv('GB2312

【转】Struts2中的OGNL详解 (1)

 转载声明:菰☆淚 - Struts2中的OGNL详解 首先了解下OGNL的概念: OGNL是Object-Graph Navigation Language的缩写,全称为对象图导航语言,是一种功能强大的表达式语言,它通过简单一致的语法,可以任意存取对象的属性或者调用对象的方法,能够遍历整个对象的结构图,实现对象属性类型的转换等功能. 此外,还得先需弄懂OGNL的一些知识: 1.OGNL表达式的计算是围绕OGNL上下文进行的. OGNL上下文实际上就是一个Map对象,由ognl.OgnlCont

技巧:Linux 动态库与静态库制作及使用详解

技巧:Linux 动态库与静态库制作及使用详解 标准库的三种连接方式及静态库制作与使用方法 Linux 应用开发通常要考虑三个问题,即:1)在 Linux 应用程序开发过程中遇到过标准库链接在不同 Linux 版本下不兼容的问题: 2)在 Linux 静态库的制作过程中发现有别于 Windows 下静态库的制作方法:3)在 Linux 应用程序链接第三方库或者其他静态库的时候发现链接顺序的烦人问题.本文就这三个问题针对 Linux 下标准库链接和如何巧妙构建 achrive(*.a) 展开相关介

View绘制详解(三),扒一扒View的测量过程

所有东西都是难者不会,会者不难,Android开发中有很多小伙伴觉得自定义View和事件分发或者Binder机制等是难点,其实不然,如果静下心来花点时间把这几个技术点都研究一遍,你会发现其实这些东西都很简单.OK,废话不多说,今天我们就来看看View的测量.View的测量纷繁复杂,不过如果能够做到提纲挈领,其实也不难.那么今天,我们就来扒一扒View的测量.本文主要涉及如下知识点: 1.View的测量 2.在父容器中对View进行测量 3.LinearLayout测量举例 4.最根上容器测量 如

windows API中CreateWindow()函数详解

CreateWindow函数详解 在注册完窗口类后就需要进行窗口的创建,用到的函数理所当然就是CreateWindow(), 而这个函数是基于窗口类的,所以还需要指定几个参数来制定特定的窗口.而且像一些不带边框的窗口是怎么创建的也是具有相当的技巧的,就是创建的是不带标题和边框的窗口,然后自己在客户区绘制程序的内容,能够制作个性化的应用程序. API解释 该函数创建一个重叠式窗口.弹出式窗口或子窗口.它指定窗口类,窗口标题,窗口风格,以及窗口的初始位置及大小(可选的).函数也指该窗口的父窗口或所属