Seaborn库绘制单变量分布和双变量分布

news2024/11/29 2:31:08

Matplotlib虽然已经是比较优秀的绘图库了,但是它有个今人头疼的问题,那就是API使用过于复杂,它里面有上千个函数和参数,属于典型的那种可以用它做任何事,却无从下手。

Seaborn基于 Matplotlib核心库进行了更高级的API封装,可以轻松地画出更漂亮的图形,而Seaborn的漂亮主要体现在配色更加舒服,以及图形元素的样式更加细腻。

不过,使用Seaborn绘制图表之前,需要安装和导入绘图的接口,具体代码如下:

#安装 
pip3installseaborn
#导入 
importseabornassns

Seaborn库的可视化数据分布

当处理一组数据时,通常先要做的就是了解变量是如何分布的。

对于单变量的数据来说采用直方图或核密度曲线是个不错的选择,对于双变量来说,可采用多面板图形展现,比如散点图、二维直方图、核密度估计图形等。

针对这种情况,Seaborn库提供了对单变量和双变量分布的绘制函数,如displot()函数、jointplot()函数,下面来介绍这些函数的使用。

绘制单变量分布

可以采用最简单的直方图描述单变量的分布情况。Seaborn中提供了distplot()函数,它默认绘制的是一个带有核密度估计曲线的直方图。distplot()函数的语法格式如下。

seaborn.distplot(a,bins=None,hist=True,kde=True,rug=False,fit=None,color=None)

上述函数中常用参数的含义如下:

(1)a:表示要观察的数据,可以是Series、一维数组或列表。

(2)bins:用于控制条形的数量。

(3)hist:接收布尔类型,表示是否绘制(标注)直方图。

(4)kde:接收布尔类型,表示是否绘制高斯核密度估计曲线。

(5)rug:接收布尔类型,表示是否在支持的轴方向上绘制rugplot。

通过distplot())函数绘制直方图的示例如下。

importnumpyasnp

sns.set()
np.random.seed(0)#确定随机数生成器的种子,如果不使用每次生成图形不一样
arr=np.random.randn(100)#生成随机数组
ax=sns.distplot(arr,bins=10,hist=True,kde=True,rug=True)#绘制直方图

上述示例中,首先导入了用于生成数组的numpy库,然后使用seaborn调用set()函数获取默认绘图,并且调用random模块的seed函数确定随机数生成器的种子,保证每次产生的随机数是一样的,接着调用randn()函数生成包含100个随机数的数组,最后调用distplot()函数绘制直方图。

运行结果如下图所示。
1662531891417_图片1.png

上图中看出:

直方图共有10个条柱,每个条柱的颜色为蓝色,并且有核密度估计曲线。

根据条柱的高度可知,位于-1-1区间的随机数值偏多,小于-2的随机数值偏少。

通常,采用直方图可以比较直观地展现样本数据的分布情况,不过,直方图存在一些问题,它会因为条柱数量的不同导致直方图的效果有很大的差异。为了解决这个问题,可以绘制核密度估计曲线进行展现。

核密度估计是在概率论中用来估计未知的密度函数,属于非参数检验方法之一,可以比较直观地看出数据样本本身的分布特征。

通过distplot()函数绘制核密度估计曲线的示例如下。

#创建包含500个位于[0,100]之间整数的随机数组
array_random=np.random.randint(0,100,500)
#绘制核密度估计曲线
sns.distplot(array_random,hist=False,rug=True)

上述示例中,首先通过random.randint()函数返回一个最小值不低于0、最大值低于100的500个随机整数数组然后调用displot()函数绘制核密度估计曲线。 运行结果如图所示。

1662531972556_图片2.png

从上图中看出,图表中有一条核密度估计曲线,并且在x轴的上方生成了观测数值的小细条。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/793101.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

1-Linux的目录结构

Linux的目录结构是规定好的,不可以随意进行更改! Linux的文件系统是采用级层式的树状目录结构,最上层是根目录–/,然后再在根目录下创建其它的目录。 各个目录中主要负责的功能和作用如下:(主体的结构一定…

TypeScript入门学习汇总

1.快速入门 1.1 简介 TypeScript 是 JavaScript 的一个超集,支持 ECMAScript 6 标准。 TypeScript 由微软开发的自由和开源的编程语言。 TypeScript 设计目标是开发大型应用,它可以编译成纯 JavaScript,编译出来的 JavaScript 可以运行在…

65英寸OLED透明屏的显示效果出色吗?

65英寸OLED透明屏是一种新型的显示技术,它采用有机发光二极管(OLED)作为显示元件,具有高亮度、高对比度、快速响应和广视角等优点。 与传统的液晶显示屏相比,OLED透明屏具有更高的透明度和更好的显示效果。 OLED透明屏…

VMPWN的入门级别题目详解(一)

实验一 VMPWN1 题目简介 这是一道基础的VM相关题目,VMPWN的入门级别题目。前面提到VMPWN一般都是接收字节码然后对字节码进行解析,但是这道题目不接受字节码,它接收字节码的更高一级语言:汇编。程序直接接收类似”mov”、”add”…

Python安装pip命令教程及更改镜像源

1、官方地址:地址 2、解压完成后,我们进入pip-23.2.1文件目录,找到setup.py,打开cmd进入此目录,或者在文件地址中输入cmd打开,输入以下命令: python setup.py install进l进行安装,安…

全网最全,Jmeter+Ant 接口自动化测试,从0到1精通实战...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 注:涉…

用友全版本任意文件上传漏洞复现

声明 本文仅用于技术交流,请勿用于非法用途 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。 文章作者拥有对此文章的修改和解释权。如欲转载或传播此文章&#xff0c…

大数据技术之Hive1

目录标题 1、Hive基本概念1.1 定义1.2 优缺点1.3 Hive架构原理1.4 hive和数据库比较 2、Hive安装2.1 Hive 安装地址 1、Hive基本概念 1.1 定义 hive是基于hadoop的一个数据仓库工具,可以将结构化数据文件映射成一张表,并提供类SQL查询功能。 本质&…

(202307)wonderful-sql:复杂一点的查询(task3)

教程链接:Datawhale - 一个热爱学习的社区 知识学习 1 视图 视图是一张虚拟的表。《sql基础教程第2版》用一句话非常凝练的概括了视图与表的区别---“是否保存了实际的数据”。 通过定义视图可以将频繁使用的SELECT语句保存以提高效率。通过定义视图可以使用户看…

OSCP最新考试QA

枚举提示 初始枚举 对你的目标进行光线扫描。 例如,扫描您的考试机器上的10个常见端口。 在等待彻底和更长时间的扫描时,手动与找到的服务交互。 仔细列举 避免对多个目标进行大量扫描。 运行不安全扫描后还原计算机。 重新运行扫描以确保所有信…

进程线程间的通信

进程和线程之间有很多种方法进行通信,如下是需要掌握的通信方式: 无名管道(pipe)有名管道(fifo)信号(signal)共享内存(mmap) 本文章代码存放在GitHub中的UNIX…

libhv之hloop源码分析

1int hloop_run(hloop_t* loop) hloop_run总结: 1.loop状态判断和管理 2.loop的flags管理(HLOOP_FLAG_QUIT_WHEN_NO_ACTIVE_EVENTS,HLOOP_FLAG_RUN_ONCE,HLOOP_FLAG_AUTO_FREE) 3.创建custom event通信fd,方…

Docker consul容器服务更新与发现

Docker consul容器服务更新与发现 一、什么事服务注册与发现二、什么是consul三、consul部署1、consul服务器2、registrator服务器3、consul-template 一、什么事服务注册与发现 服务注册与发现是微服务架构中不可或缺的重要组件。起初服务都是单节点的,不保障高可…

MyBatis学习笔记之高级映射及延迟加载

文章目录 环境搭建,数据配置多对一的映射的思路逻辑级联属性映射association分布查询 一对多的映射的思路逻辑collection分布 环境搭建,数据配置 t_class表 t_stu表 多对一的映射的思路逻辑 多对一:多个学生对应一个班级 多的一方是st…

STM32 中断优先级管理(一)

STM32 NVIC 中断优先级管理 CM3内核支持256个中断,其中包含了16个内核中断和240个外部中断,并且有256级的可编程中断设置。 但STM32并没有使用CM3内核的全部东西,只用了一部分。 STM32有84个中断,包括16个内核中断和68个可屏蔽…

Windows数据类型LPSTR学习

Windows在C语言的基础之上又定义了一些Windows下的数据类型;下面学习一下LPSTR; LPSTR和LPWSTR是Win32和VC所使用的一种字符串数据类型。LPSTR被定义成是一个指向以NULL(‘\0’)结尾的32位ANSI字符数组指针,而LPWSTR是一个指向以NULL结尾的64…

Fiddler使用教程|渗透测试工具使用方法Fiddler

提示:如有问题可联系我,24小时在线 文章目录 前言一、Fiddler界面介绍二、菜单栏1.菜单Fiddler工具栏介绍Fiddler命令行工具详解 前言 网络渗透测试工具: Fiddler是目前最常用的http抓包工具之一。 Fiddler是功能非常强大,是web…

探秘MySQL底层架构:设计与实现流程

前言 Mysql,作为一款优秀而广泛使用的数据库管理系统,对于众多Java工程师来说,几乎是日常开发中必不可少的一环。无论是存储海量数据,还是高效地检索和管理数据,Mysql都扮演着重要的角色。然而,除了使用My…

全网最牛,Jmeter接口自动化-读取用例执行并结果回写(详细整理)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、环境准备 下载…

(vue)vue项目获取日期 时间 星期

(vue)vue项目获取日期 时间 星期 效果&#xff1a; 代码&#xff1a; <div class"top-time"><div class"time-currentDate">{{ currentDate }}<div class"time-img"><img src"/assets/image/icon-time.png" a…