Seaborn:统计可视化利器

作为基于 Matplotlib 的高级绘图库,有一下功能:
在这里插入图片描述

一元特征数据

直方图

import matplotlib.pyplot as plt 
import pandas as pd  
import seaborn as sns # import os
# # 如果文件夹不存在,创建文件夹
# if not os.path.isdir("Figures"):
#     os.makedirs("Figures")# 导入鸢尾花数据
iris_sns = sns.load_dataset("iris") iris_sns# 绘制花萼长度样本数据直方图
fig, ax = plt.subplots(figsize = (8, 6))sns.histplot(data=iris_sns, x="sepal_length", binwidth=0.2, ax = ax)								# 纵轴三个选择:频率、概率、概率密度ax.axvline(x = iris_sns.sepal_length.mean(), color = 'r', ls = '--')								# 增加均值位置竖直参考线# 参考https://seaborn.pydata.org/tutorial/distributions.html

效果:
在这里插入图片描述
在这里插入图片描述
代码演示如下图所示:

# 绘制花萼长度样本数据直方图, 考虑鸢尾花分类
fig, ax = plt.subplots(figsize = (8,6))
sns.histplot(data = iris_sns, x="sepal_length",
hue = 'species', binwidth=0.2, ax = ax,
element="step", stat = 'density')
# 纵轴为概率密度

如果要分组的话使用如下代码:

fig, ax = plt.subplots(figsize=(8, 6))
sns.histplot(data=iris_sns,          # 数据源(DataFrame)x="sepal_length",       # 指定x轴为花萼长度hue='species',          # 按鸢尾花种类分组着色binwidth=0.2,           # 直方图条柱宽度为0.2ax=ax,                  # 指定绘图坐标轴element="step",         # 直方图样式为阶梯线stat='density'          # 纵轴显示密度而非计数
)

核密度估计KDE

将每个点变成一个高斯核函数(就是高斯分布的那个函数形式),然后再叠加
在这里插入图片描述

# 绘制花萼长度样本数据,高斯核密度估计
fig, ax = plt.subplots(figsize = (8,6))sns.kdeplot(data=iris_sns, x="sepal_length", 	# 生成核密度曲线bw_adjust=0.3, fill = True)			# 调整曲率,填充区域
sns.rugplot(data=iris_sns, x="sepal_length")	# 生产毛毯图(小刺)

效果:
在这里插入图片描述

# 绘制花萼长度样本数据,高斯核密度估计,考虑鸢尾花类别
fig, ax = plt.subplots(figsize = (8,6))sns.kdeplot(data=iris_sns, x="sepal_length", hue = 'species', # 各自的分布bw_adjust=0.5, fill = True)
sns.rugplot(data=iris_sns, x="sepal_length", hue = 'species')# fig.savefig('Figures\一元,kdeplot + rugplot + hue.svg', format='svg')

在这里插入图片描述

# 绘制花萼长度样本数据,高斯核密度估计,考虑鸢尾花类别,堆叠
fig, ax = plt.subplots(figsize = (8,6))sns.kdeplot(data=iris_sns, x="sepal_length", hue="species", multiple="stack", 		# 设置叠加属性bw_adjust=0.5)

效果:
在这里插入图片描述

# 绘制后验概率 (成员值)fig, ax = plt.subplots(figsize = (8,6))
sns.kdeplot(data=iris_sns, x="sepal_length", hue="species", bw_adjust=0.5,multiple = 'fill')			# 设置叠加效果

效果:
在这里插入图片描述

分散点图/蜂群图

在这里插入图片描述
较小的数据使用:seaborn.stripplot() 蜂群图
较大的数据使用:seaborn.swarmplot() 分散点图

# 绘制鸢尾花花萼长度分散点图
fig, ax = plt.subplots(figsize = (8,6))
sns.stripplot(data=iris_sns, x="sepal_length", y="species", hue="petal_length", palette="RdYlBu_r", ax = ax)

效果:
在这里插入图片描述

# 绘制花萼长度样本数据, 蜂群图
fig, ax = plt.subplots(figsize = (8,4))
sns.swarmplot(data=iris_sns, x="sepal_length", ax = ax)
# 绘制花萼长度样本数据, 蜂群图, 考虑分类
fig, ax = plt.subplots(figsize = (8,4))
sns.swarmplot(data=iris_sns, x="sepal_length", y = 'species',
hue = 'species', ax = ax)

箱型图

在这里插入图片描述
包含元素:
在这里插入图片描述

# 绘制鸢尾花花萼长度箱型图
fig, ax = plt.subplots(figsize = (8,2))
sns.boxplot(data=iris_sns, x="sepal_length", ax = ax)

效果:
在这里插入图片描述

# 绘制鸢尾花花萼长度箱型图,考虑鸢尾花分类
fig, ax = plt.subplots(figsize = (8,3))
sns.boxplot(data=iris_sns, x="sepal_length", y = 'species', ax = ax)

效果:
在这里插入图片描述

小提琴图

可以看成用核密度曲线优化的箱线图

# 绘制花萼长度样本数据,小提琴图
fig, ax = plt.subplots(figsize = (8,2))
sns.violinplot(data=iris_sns, x="sepal_length", ax = ax)

效果:
在这里插入图片描述

# 绘制花萼长度样本数据,小提琴图,考虑分类
fig, ax = plt.subplots(figsize = (8,4))
sns.violinplot(data=iris_sns, x="sepal_length", y="species", ax = ax)

在这里插入图片描述

sns.violinplot(data=iris_sns, x="sepal_length", y="species", inner = 'stick')

在这里插入图片描述

# 蜂群图 + 小提琴图,考虑鸢尾花分类sns.catplot(data=iris_sns, x="sepal_length", y="species", kind="violin", color=".9", inner=None)sns.swarmplot(data=iris_sns, x="sepal_length", y="species", size=3)

在这里插入图片描述

二元特征数据

散点图

通过散点图可以简要查看两个维度是否有何关系

# 鸢尾花散点图 + 毛毯图
fig, ax = plt.subplots(figsize = (4,4))sns.scatterplot(data=iris_sns, x="sepal_length", y="sepal_width")
sns.rugplot(data=iris_sns, x="sepal_length", y="sepal_width")

效果:
在这里插入图片描述

fig, ax = plt.subplots(figsize = (4,4))sns.scatterplot(data=iris_sns, x="sepal_length", y="sepal_width", hue = 'species')
sns.rugplot(data=iris_sns, x="sepal_length", y="sepal_width", hue = 'species')fig.savefig('Figures\二元,scatterplot + rugplot + hue.svg', format='svg')

效果:
在这里插入图片描述

二元直方热图

二维散点图转化为直方图后效果并不清晰
在这里插入图片描述
在这里插入图片描述
因此采用二维热力图:
在这里插入图片描述

# 鸢尾花二元频率直方热图sns.displot(data=iris_sns, x="sepal_length", y="sepal_width", binwidth=(0.2, 0.2), cbar=True)

在这里插入图片描述

联合分布 KDE

使用高斯核函数可以估算联合分布,这样的联合分布可以用等高线图表示。
在这里插入图片描述

# 联合分布概率密度等高线
sns.displot(data=iris_sns, x="sepal_length", y="sepal_width", kind="kde")

效果:
在这里插入图片描述

# 联合分布概率密度等高线,考虑分布
sns.kdeplot(data=iris_sns, x="sepal_length", y="sepal_width", hue = 'species')

在这里插入图片描述

联合分布+边缘分布

看图即可懂:
在这里插入图片描述

# 联合分布、边缘分布
sns.jointplot(data=iris_sns, x="sepal_length", y="sepal_width", kind = 'kde', fill = True)

这里仅放示范代码,其他代码查看附件。

线性回归

# 可视化线性回归关系
sns.lmplot(data=iris_sns, x="sepal_length", y="sepal_width")

效果:
在这里插入图片描述

多元特征数据

可以用一元可视化方案展现多元特诊
首先将宽格式转化为长格式。
原来的宽格式:
在这里插入图片描述

iris_melt = pd.melt(iris_sns, "species", var_name="measurement")
iris_melt

通过代码结果可以查看长数据:
在这里插入图片描述

聚类热图

# 聚类热图
sns.clustermap(iris_sns.iloc[:,:-1], cmap = 'RdYlBu_r', vmin = 0, vmax = 8)

在这里插入图片描述

成对特征散点图

sns.pairplot(iris_sns)

在这里插入图片描述

# 绘制成对特征散点图
sns.pairplot(iris_sns, hue = 'species')

效果:
在这里插入图片描述

平行坐标图


from pandas.plotting import parallel_coordinates
# 可视化函数来自pandas
parallel_coordinates(iris_sns, 'species', colormap=plt.get_cmap("Set2"))
plt.show()

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

kafka 消费者组的概念是什么?它是如何实现消息的点对点和发布/订阅模式?

Kafka 消费者组(Consumer Group)是 Kafka 架构中的核心概念,它是一组共同协作来消费一个或多个主题(Topic)数据的消费者应用的集合。 通过简单地为多个消费者实例配置相同的 group.id,它们就组成了一个消费…

C#文件复制异常深度剖析:解决“未能找到文件“之谜

一个看似简单的文件操作问题 在C#开发中,文件操作是基础中的基础,但有时最基础的File.Copy()方法也会抛出令人困惑的异常。最近我遇到了这样一个问题: File.Copy(sourceFile, targetFilePath);当targetFilePath设置为D:\25Q1\MR3.6.6.1_C1.2.…

OpenCV Python——图像查找(特征匹配 + 单应性矩阵)

1 图像查找(单应性矩阵)2 单应性矩阵 应用举例3 单应性矩阵 代码示例P87 111 图像查找(单应性矩阵) 特征匹配作为输入,获得单应性矩阵 点X在img1和img2中的成像分别为x,x 图中H即为单应性矩阵 2 单应性矩阵 应用…

Ubuntu 安装带证书的 etcd 集群

1.概念 etcd 是由GO语言编写的分布式的、可靠的键值存储系统,主要用于分布式系统中关键数据的存储和服务发现。 2.核心概念 节点(Node) 每个运行 etcd 的实例被称为一个节点。一个或多个节点可以组成一个集群。 集群(Cluster&…

360 集团20周年会:战略升级ALL IN Agent,抢占智能体时代先机

发布 | 大力财经8月15日,360集团迎来二十周年,在北京奥林匹克体育中心举办的“360集团20周年荣耀庆典”上,创始人周鸿祎向现场数千名员工发表演讲,回顾360集团二十年的发展历程,并明确360集团下一阶段的公司战略&#…

命令模式C++

命令模式(Command Pattern)是一种行为型设计模式,它将请求封装为一个对象,使你可以用不同的请求对客户进行参数化,还能支持请求的排队、记录日志及撤销操作。这种模式将发送者和接收者解耦,发送者无需知道接…

Web攻防-大模型应用LLM搭建接入第三方内容喂养AI插件安全WiKI库技术赋能

知识点: 1、WEB攻防-LLM搭建-AI喂养&安全知识WIKI库 演示案例:WEB攻防-LLM搭建-AI喂养&安全知识WIKI库 使用参考 https://docs.web2gpt.ai/ https://mp.weixin.qq.com/s/qqTOW5Kg1v0uxdSpbfriaA 0、服务器环境:阿里云 Ubuntu22.04 …

图片拼接-动手学计算机视觉8

前言图片拼接(image stitching)就是将统一场景的不同拍摄出的图片拼接到一起,如图所示就是拼接全景图,是图片拼接的应用之一,手机拍照都有全景拍摄功能仔细观察全景图,寻找它们相似性,图8-2的全…

Web第二次作业

作业一&#xff1a;学校官网1.1学校官网代码如下&#xff1a;​<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0">&l…

【CV 目标检测】②R-CNN模型

二、R-CNN网络基础 2.R-CNN模型 2014年提出R-CNN&#xff01;网络&#xff0c;该网络不再使用暴力穷举的方法&#xff0c;而是使用候选区域方法&#xff08;region proposal method&#xff09;创建目标检测的区域来完成目标检测的任务&#xff0c;R-CNN是以深度神经网络为基础…

STM32L051C8与STM32L151C8的主要区别

STM32L051C8与STM32L151C8 有什么区别&#xff1f; LPTIM 有什么特点,为什么STM32L151C8没有LPTIM,而STM32L051C8有1个? 1. STM32L051C8与STM32L151C8的主要区别 STM32L051C8STM32L151C8内核Cortex-M0Cortex-M3主频32MHz32MHz闪存/ SRAM64KB/8KB64KB/16KB工作电压1.65V-3.6V…

【软考中级网络工程师】知识点之网关协议深度剖析

目录一、网关协议基础探秘1.1 网关协议概念1.2 网关协议作用1.3 网关协议分类总览二、内部网关协议&#xff08;IGP&#xff09;深度解析2.1 距离矢量协议2.2 链路状态协议2.3 混合型协议三、外部网关协议&#xff08;EGP&#xff09;探秘3.1 BGP 协议详解3.2 BGP 协议的关键特…

JavaScript 中 call、apply 和 bind 方法的区别与使用

一、核心作用与基础概念这三个方法都用于显式改变函数执行时的 this 指向&#xff0c;解决 JavaScript 中函数上下文动态绑定的问题。1.call()立即执行函数&#xff0c;第一个参数为 this 指向对象&#xff0c;后续参数为逗号分隔的参数列表语法&#xff1a;func.call(thisArg,…

【Android】适配器与外部事件的交互

三三要成为安卓糕手 引入&#xff1a;在上一篇文章中我们完成了新闻展示页面多布局案例的展示&#xff0c;感悟颇多&#xff0c;本篇文章&#xff0c;继续去开发一些新的功能 一&#xff1a;关闭广告 所有的view都可以和我们的用户做交互&#xff0c;循环视图中也给我们提供了相…

MySQL的分析查询语句(EXPLAIN):

目录 基本语法&#xff1a; 各个字段的含义&#xff1a; id&#xff1a; select_type&#xff1a; table&#xff1a; partitions&#xff1a; type&#xff1a; possible_keys&#xff1a; key&#xff1a; key_len&#xff1a; ref&#xff1a; row&#xff1a; …

C++ #if

在 C 中&#xff0c;#if 是 预处理器指令&#xff08;Preprocessor Directive&#xff09;&#xff0c;用于 条件编译&#xff0c;即在编译阶段根据条件决定是否包含某段代码。它通常与 #define、#ifdef、#ifndef、#else 和 #endif 配合使用。基本语法#if 条件表达式// 如果条件…

方案 | 动车底部零部件检测实时流水线检测算法改进

项目背景随着我国高速铁路运营里程突破4.5万公里&#xff0c;动车组日均开行超过8000列次&#xff0c;传统人工巡检方式已无法满足密集运行下的安全检测需求。车底关键部件如制动系统、悬挂装置、牵引电机等长期承受高强度振动和冲击&#xff0c;易产生疲劳裂纹、螺栓松动、部件…

企业收款统计:驱动业务决策的核心引擎设计开发——仙盟创梦IDE

代码完整代码<!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><title>黑金风格职员统计</title><style>/* 页面基础样式 - 黑金风格 */body {font-family: Segoe UI, Tahoma, Geneva, Verdana, …

CIAIE 2025上海汽车内外饰展观察:从美学到功能的产业跃迁

在智能化、电动化浪潮推动下&#xff0c;汽车产业的市场格局、技术路线、供应链结构与用户体验正被系统性重塑。汽车感知空间核心的“内外饰件”&#xff0c;正从原本的结构性、功能性部件&#xff0c;逐步跃升为智能化、情感化和差异化体验的重要承载载体&#xff0c;开启了从…

Spring IOC容器在Web环境中的启动奥秘:深入源码解析

一、为何需要关注IOC容器启动&#xff1f;在Java Web开发中&#xff0c;Spring MVC框架的基石正是IOC容器。但你是否思考过&#xff1a;独立的IOC模块如何与Tomcat等Servlet容器协同工作&#xff1f; 其启动过程与Web容器的生命周期深度绑定&#xff0c;这是构建稳定Spring应用…