文/易执 图片来源于网络

Seaborn是基于matplotlib的Python可视化库。它提供了一个高级界面来绘制有吸引力的统计图形。Seaborn其实是在matplotlib的基础上进行了更高级的API封装,从而使得作图更加容易,不需要经过大量的调整就能使你的图变得精致。但应强调的是,应该把Seaborn视为matplotlib的补充,而不是替代物。

注:所有代码均在IPython notebook中实现


barplot(条形图)

条形图表示数值变量与每个矩形高度的中心趋势的估计值,并使用误差线提供关于该估计值附近的不确定性的一些指示。具体用法如下:

seaborn.barplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None, estimator=(function mean), ci=95, n_boot=1000, units=None, orient=None, color=None, palette=None, saturation=0.75, errcolor='.26', errwidth=None, capsize=None, dodge=True, ax=None, **kwargs)

接下来还是通过具体例子学习里面的一些参数的用法:

%matplotlib inlineimport pandas as pdimport numpy as npimport seaborn as snsimport matplotlib.pyplot as pltplt.rc("font",family="SimHei",size="12")  #用于解决中文显示不了的问题sns.set_style("whitegrid")

本篇文章所采用的数据集内容如下

data.head(5)   #data是一个dataframe

  x,y(str):dataframe中的列名

  data:dataframe或者数组

sns.barplot(x="color",y="age",data=data)

关于图像的解释:Seaborn会对”color“列中的数值进行归类后按照estimator参数的方法(默认为平均值)计算相应的值,计算出来的值就作为条形图所显示的值(条形图上的误差棒则表示各类的数值相对于条形图所显示的值的误差)

hue(str):dataframe的列名,按照列名中的值分类形成分类的条形图

sns.barplot(x="color",y="age",data=data,hue="gender")

order, hue_order (lists of strings):用于控制条形图的顺序

fig,axes=plt.subplots(1,2)sns.barplot(x="gender",y="age",data=data,ax=axes[0])sns.barplot(x="gender",y="age",data=data,ax=axes[1],order=["女","男"])

estimator:控制条形图的取整列数据的什么值

fig,axes=plt.subplots(1,2)sns.barplot(x="gender",y="age",data=data,ax=axes[0])  #左图,默认为平均值sns.barplot(x="gender",y="age",estimator=np.median,data=data,ax=axes[1])  #右图,中位数

ci(float): 允许的误差的范围(控制误差棒的百分比,在0-100之间),若填写"sd",则误差棒用标准误差。(默认为95)

fig,axes=plt.subplots(1,2)sns.barplot(x="color",y="age",data=data,ci=0,ax=axes[0])  #左图sns.barplot(x="color",y="age",data=data,ci="sd",ax=axes[1])  #右图

capsize(float):设置误差棒帽条(上下两根横线)的宽度

fig,axes=plt.subplots(1,2)sns.barplot(x="color",y="age",data=data,ax=axes[0],capsize=.2)  #左图sns.barplot(x="color",y="age",data=data,ax=axes[1],capsize=.5)  #右图

palette:调色板,控制不同的颜色style

fig,axes=plt.subplots(2,1)sns.barplot(x="color",y="age",data=data,ax=axes[0])  #上图sns.barplot(x="color",y="age",data=data,palette="Set3",ax=axes[1])  #下图

X,Y轴互换

fig,axes=plt.subplots(1,2)sns.barplot(x="age",y="color",data=data,ax=axes[0])  #左图sns.barplot(x="color",y="age",data=data,ax=axes[1])  #右图


countplot入门

一个计数图可以被认为是一个分类直方图,而不是定量的变量。基本的api和选项与barplot()相同,因此您可以比较嵌套变量中的计数。(工作原理就是对输入的数据分类,条形图显示各个分类的数量)具体用法如下:

seaborn.countplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None, orient=None, color=None, palette=None, saturation=0.75, dodge=True, ax=None, **kwargs)

注:countplot参数和barplot基本差不多,可以对比着记忆,有一点不同的是countplot中不能同时输入x和y,且countplot没有误差棒。

根据例子体验一下:

fig,axes=plt.subplots(1,2)sns.countplot(x="gender",data=data,ax=axes[0]) #左图sns.countplot(y="gender",data=data,ax=axes[1])  #右图

fig,axes=plt.subplots(1,2)sns.countplot(x="gender",hue="smoker",data=data,ax=axes[0]) #左图sns.countplot(y="gender",hue="smoker",data=data,ax=axes[1])  #右图

fig,axes=plt.subplots(2,1)sns.countplot(x="color",data=data,ax=axes[0])  #上图sns.countplot(x="color",data=data,palette="Set3",ax=axes[1])  #下图


pointplot入门

点图代表散点图位置的数值变量的中心趋势估计,并使用误差线提供关于该估计的不确定性的一些指示。点图可能比条形图更有用于聚焦一个或多个分类变量的不同级别之间的比较。他们尤其善于表现交互作用:一个分类变量的层次之间的关系如何在第二个分类变量的层次之间变化。连接来自相同色调等级的每个点的线允许交互作用通过斜率的差异进行判断,这比对几组点或条的高度比较容易。具体用法如下:

seaborn.pointplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None, estimator=(function mean), ci=95, n_boot=1000, units=None, markers='o', linestyles='-', dodge=False, join=True, scale=1, orient=None, color=None, palette=None, errwidth=None, capsize=None, ax=None, **kwargs)

下面继续使用之前的数据集进行绘图,和barplot相同的参数就不再具体演示,重点演示pointplot独有的。

sns.set(font_scale) #初始化seaborn配置,并设置字体大小sns.set_style("darkgrid") #灰色网格背景sns.pointplot(x="smoker",y="age",data=data)

图中的点为这组数据的平均值点,竖线则为误差棒,默认两个均值点会相连接,若不想显示,可以通过join参数实现:

sns.pointplot(x="smoker",y="age",data=data,join=False)

之前我们演示过barplot的hue参数,现在我们看一下pointplot的hue参数:

sns.pointplot(x="smoker",y="age",data=data,hue="gender")

我们可以看到两个类别的误差棒重叠在了一起,使数据观测不清晰。怎么解决这个问题呢?pointplot的dodge参数可以使重叠的部分错开:

sns.pointplot(x="smoker",y="age",data=data,hue="gender",dodge=True)

接下来我们对均值点的样式(由参数markers控制)和相同色调的点之间的连线(由参数linestyles控制)做一下改动。

sns.pointplot(x="smoker",y="age",data=data,hue="gender",dodge=True,markers=["*","x"],linestyles=["-.","--"])

其他样式请参考matplotlib线条样式

将X,Y轴互换

sns.pointplot(x="age",y="color",data=data)

通过color参数控制不同单层图的颜色

sns.pointplot(x="age",y="color",data=data,color="#bb3f3f")

还有其他效果和barplot一样的参数,大家可以动手自己试一下。以上内容是我结合官方文档和自己的一点理解写成的,有什么错误大家可以指出来并提提意见,共同交流、进步,也希望我写的这些能够给阅读完本文的你或或少的帮助!

▼点击成为社区注册会员      喜欢文章,点个

设置宽度 seaborn barplot_Seaborn入门:详解barplot和countplot相关推荐

  1. python符号格式化设置区间_Python 数值区间处理_对interval 库的快速入门详解

    使用 Python 进行数据处理的时候,常常会遇到判断一个数是否在一个区间内的操作.我们可以使用 if else 进行判断,但是,既然使用了 Python,那我们当然是想找一下有没有现成的轮子可以用. ...

  2. FFmpeg入门详解之121:颜色空间转换RGB和YUV的原理与实战

    5.颜色空间转换RGB和YUV的原理与实战 三种颜色空间模型:RGB.YUV.HSV 一.概述 颜色通常用三个独立的属性来描述,三个独立变量综合作用,自然就构成一个空间坐标,这就是颜色空间. 但被描述 ...

  3. [论文阅读] (01) 拿什么来拯救我的拖延症?初学者如何提升编程兴趣及LATEX入门详解

    又是在凌晨三点赶作业,又是在Deadline前去熬夜,一次次无眠,一次次抱怨.为什么三年前.两年前.一年前,甚至是昨天,我都下定决心"从现在开始读顶会论文",却又悄悄选择逃避:为什 ...

  4. CNN入门详解及TensorFlow源码实现--深度学习笔记

    CNN入门详解及TensorFlow源码实现–深度学习笔记 ##一.卷积神经网络 ###1.简介 卷积神经网络是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出 ...

  5. FFmpeg入门详解之105:m3u8文件格式详解

    简介 M3U8 是 Unicode 版本的 M3U,用 UTF-8 编码."M3U" 和 "M3U8" 文件都是苹果公司使用的 HTTP Live Stream ...

  6. python怎么安装myqr模块-python二维码操作:对QRCode和MyQR入门详解

    python是所有编程语言中模块最丰富的 生活中常见的二维码功能在使用python第三方库来生成十分容易 三个大矩形是定位图案,用于标记二维码的大小.这三个定位图案有白边,通过这三个矩形就可以标识一个 ...

  7. python怎么安装myqr_python二维码操作:对QRCode和MyQR入门详解

    python是所有编程语言中模块最丰富的 生活中常见的二维码功能在使用python第三方库来生成十分容易 三个大矩形是定位图案,用于标记二维码的大小.这三个定位图案有白边,通过这三个矩形就可以标识一个 ...

  8. java servlet 入门_servlet 入门详解

    servlet 入门详解 Servlet是一种服务器端的编程语言,是J2EE中比较关键的组成部分.Servlet本质上也是Java类,编写Servlet需要遵循java的基本语法,但是与一般的Java ...

  9. gcn 图卷积神经网络_GCN图卷积网络入门详解

    字幕组双语原文:[GCN]图卷积网络(GCN)入门详解 英语原文:Graph Convolutional Networks (GCN) 翻译:听风1996.大表哥 在这篇文章中,我们将仔细研究一个名为 ...

  10. mac电脑使用入门详解

    大家来到MAC系统以后,首先在使用习惯以及界面上,都需要有一个适应的过程,小编为大家整理了这个小白教程,有助于你快速习惯这个MAC系统. 讲个笑话: 我一朋友看到Mac界面很酷,就买了个Mac笔记本, ...

最新文章

  1. 计算机考试前的心情作文,期中考试前的心情作文
  2. 【Hibernate步步为营】--多对多映射详解
  3. php关联二维数组,php-检查关联二维数组
  4. 对layoutInflater的理解
  5. [html] 你了解HTML5的download属性吗?
  6. React 第十一章 组件的组合使用
  7. ios获取区域服务器信息,ios获取服务器数据
  8. Dot Graphiz 操作说明
  9. 2017-09-26 10:45:51.905 ERROR 9704 --- [nio-8080-exec-5] com.linktrust.aspect.AopLogger :
  10. 那些年你错过的房子 1980-2017年记录: 深圳真实房价
  11. 微信素材管理,新增临时素材
  12. MessageBox--获知点击确认还是取消?
  13. python股票交易接口源代码分享
  14. 明清时期江右商的宗族教育——江西流坑村的历史人类学考察
  15. 专访百度AI交互设计院院长关岱松:感知类学科的尽头都是心理学 | 甲子光年
  16. Python实现三维数据(x, y, z)的索引——即通过(x, y)的值索引z的值
  17. size balanced tree (平衡二叉树) ----- 傻X树----陈启峰论文
  18. VS中使用QT进行中英文翻译
  19. Linux-CentOS7系统服务中systemctl命令介绍
  20. 给你心爱的 npm 包上个『北京户口』

热门文章

  1. Codeforces Round #388 (Div. 2) C. Voting
  2. 使用sslsplit嗅探tls/ssl连接
  3. 克隆模式----快速与数据库比对数据
  4. VS2008启动调试,出现“ 已经找到网站 正在等待回应”
  5. BatchNormalization 优点
  6. 190121每日一句
  7. Atitit 获取多媒体mp3 mp4 m4a元数据 G:\桌面安装\paidashi\bin\ffprobe.exe ffprobe -i 1.flv -print_format json -sh
  8. Atitit 同步获取阻塞式命令行输出 费阻塞式样命令行执行完毕后退出了,可以直接获取其输出 InputStream is = new StreamGobbler(session.getStd
  9. Atitit jquery  1.4--v1.11  v1.12  v2.0  3.0 的新特性
  10. Atitit.病毒木马的快速扩散机制原理nio 内存映射MappedByteBuffer