Seaborn 绘图基础

news2026/4/7 2:31:22
在 Python 的数据可视化生态中Seaborn 是建立在 Matplotlib 之上的高级统计绘图库。它面向数据分析任务提供了更直接的绘图接口能够围绕变量的分布、关系与结构组织图形表达因此特别适合教学入门与探索性数据分析。与只关注“如何画出线、点、柱”不同Seaborn 更强调“数据之间是什么关系、分布如何、组间差异是否明显”。因此学习 Seaborn 的关键不是孤立记忆函数名而是先建立一条清晰主线先明确分析问题再选择图形类型最后完成必要的细节调整。一、什么是 SeabornSeaborn 的核心价值在于它把统计图形的常见需求做了更高层的封装。使用者通常不必从底层图元开始逐步拼装而可以直接以表格数据为基础指定哪些变量映射到横轴、纵轴、颜色或图形结构上。从使用特点看Seaborn 有以下几个方面值得重点把握。1、面向数据集绘图Seaborn 的多数函数可以直接接收 DataFrame并通过 x、y、hue 等参数把数据列映射到图中的不同视觉通道上。这样代码更接近“变量之间的分析关系”而不是“逐个对象如何绘制”。2、更适合统计表达Seaborn 提供的许多图形本身就服务于统计分析。例如• 用直方图与密度曲线观察分布• 用成对关系图观察多个变量之间的关系• 用热力图展示矩阵数据或相关性结构3、默认风格较完整Seaborn 的默认主题、配色和网格设置更适合分析场景。对于教学与报告而言通常可以较快得到结构清楚、视觉统一的图形。4、能与 Matplotlib 配合使用Seaborn 虽然提供了更高层的统计图形接口但它并没有脱离 Matplotlib。实际工作中更常见的方式是1先用 Seaborn 快速绘制图形主体2再用 Matplotlib 调整标题、坐标轴名称、刻度等细节。例如ax sns.histplot(np.random.randn(1000), bins30, kdeTrue)ax.set_title(随机数据分布图)ax.set_xlabel(取值)ax.set_ylabel(频次)plt.show()这种写法说明Seaborn 生成的图形对象仍然可以继续使用 Matplotlib 的方法进行控制。两者配合使用才是最常见也最实用的工作方式。二、Seaborn 的基本使用方式Seaborn 的常见导入方式如下import seaborn as snsimport matplotlib.pyplot as pltimport pandas as pdimport numpy as np如果希望统一图形风格可以先设置主题sns.set_theme(stylewhitegrid)其中stylewhitegrid 表示使用带网格线的浅色背景风格。这种风格在展示统计图形时通常较为清晰。若中文显示异常可添加以下代码# 设置中文字体plt.rcParams[font.sans-serif] [SimHei] # 黑体plt.rcParams[axes.unicode_minus] False # 解决负号显示问题下面先准备一份简单示例数据df pd.DataFrame({ 学习时长: [1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6], 成绩: [55, 59, 62, 66, 69, 72, 75, 78, 80, 83, 57, 60, 64, 67, 70, 73, 76, 79, 82, 84, 61, 65, 68, 71, 74, 77, 80, 83, 86, 89, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90], 班级: [A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B], 性别: [女, 男, 女, 男, 女, 男, 男, 女, 男, 女, 男, 女, 男, 女, 男, 女, 女, 男, 女, 男, 女, 女, 男, 女, 男, 女, 男, 女, 男, 男, 男, 女, 女, 男, 女, 男, 女, 男, 女, 男]})这份数据中学习时长、成绩是数值变量班级、性别是分类变量。Seaborn 很适合处理这种“数值变量 分类变量”并存的表格数据。三、Seaborn 的基本思路先看问题再选图形可以先把常见问题分成三类1、看数据如何分布例如成绩主要集中在哪些范围数据是否偏态是否存在多个峰值。这类问题通常使用直方图、密度图。2、看变量之间的关系例如学习时长与成绩之间是否存在正相关趋势多个特征之间是否存在明显联系不同类别在变量关系上是否分离。这类问题通常使用成对关系图等关系型图形。3、看矩阵型数据或结构关系例如一张成绩表中哪些位置数值高、哪些位置数值低各特征之间的相关性强弱如何。这类问题通常使用热力图。这一划分非常重要。图形不是为了“画得丰富”而是为了服务于分析任务本身。四、频次直方图和密度图分布分析是 Seaborn 中最基础的内容之一。最常用的函数是 histplot()。1、直方图的作用直方图用于观察数值型数据在不同区间中的分布情况。它会把数据划分成若干区间并统计每个区间内有多少观测值。示例data np.random.randn(1000) sns.histplot(data, bins30)plt.show()这张图可以帮助我们观察• 数据主要集中在哪些范围• 分布是否大致对称• 是否存在明显偏态其中bins30 表示把数据范围划分为 30 个区间。2、密度曲线的作用在 Seaborn 中可以通过 kdeTrue 在直方图上叠加一条平滑的核密度估计曲线data np.random.randn(1000) sns.histplot(data, bins30, kdeTrue)plt.show()这里• 柱形部分表示各区间的频次• 平滑曲线表示整体分布趋势与直方图相比密度曲线更适合观察分布形状与纯密度图相比直方图又更能体现离散计数信息。把二者结合起来可以同时把握“局部数量”与“整体轮廓”。3、适用场景直方图与密度曲线特别适合回答以下问题• 一组成绩是否集中在中间分数段• 某变量是否近似服从正态分布• 两组数据的分布是否明显不同如果只是想了解单变量的大致分布通常从 histplot() 开始最合适。五、成对关系图 pairplot当数据集中有多个数值变量时单独逐幅作图会比较繁琐。pairplot() 可以一次性展示多个变量的成对关系是多变量探索分析中非常有代表性的图形。1、基本作用pairplot() 会自动为数值变量建立一个图形网格• 非对角线位置展示变量两两之间的关系• 对角线位置展示单个变量自身的分布示例鸢尾花数据分析iris sns.load_dataset(iris) sns.pairplot(datairis, huespecies)plt.show()这段代码中• datairis 指定输入数据• huespecies 表示用颜色区分不同类别绘制后可以同时看到多个变量之间的散点关系以及每个变量自身的分布情况。2、成对关系图的重要性pairplot() 的价值在于它可以快速帮助我们判断• 哪些变量之间可能存在明显关系• 某些类别是否在变量组合上自然分离• 各变量的分布是否集中或重叠这类图形特别适合数据分析的初步探索阶段。3、pairplot() 常用参数pairplot() 中几个常用参数如下• data输入数据• hue按分类变量分组着色• kind控制非对角线区域的图形类型• diag_kind控制对角线区域的图形类型例如sns.pairplot( datairis, huespecies, kindscatter, diag_kindhist)plt.show()这里表示• 非对角线位置使用散点图• 对角线位置使用直方图4、使用成对关系图时的注意点pairplot() 虽然方便但变量一多图形会迅速变得很大。因此它更适合• 变量数量不太多的数据集• 入门教学中的多变量观察• 初步筛选值得进一步分析的变量组合如果特征很多就应先挑选重点变量再进行绘制。六、热力图 heatmap热力图用于把二维矩阵数据转化为颜色编码图形。它的核心思想是用颜色深浅表示数值大小。在 Seaborn 中heatmap() 是非常重要的基础函数。它通常有两类常见用途一类是展示原始矩阵型数据另一类是展示相关性矩阵。1、用热力图展示数值表例如下面是一张学生成绩表scores pd.DataFrame({ Student_ID: [01, 02, 03, 04, 05], Math: [80, 70, 88, 60, 95], Eng: [85, 75, 80, 65, 90], Phy: [78, 82, 86, 70, 85], Chem: [92, 85, 80, 75, 88], Bio: [88, 90, 85, 72, 92]}).set_index(Student_ID)可以用热力图直接观察数值分布sns.heatmap(scores, annotTrue, fmtd, cmapYlGnBu)plt.show()其中• annotTrue 表示在每个格子中显示具体数值• fmtd 表示按整数格式显示• cmapYlGnBu 表示使用渐变配色方案这类图形适合快速判断• 哪位学生哪些科目成绩较高• 哪些科目整体偏高或偏低• 某些局部位置是否存在突出值2、用热力图展示相关性矩阵热力图的另一类重要用途是展示变量之间的相关系数矩阵。相关性矩阵是把多个变量两两之间的相关系数按行列排成的矩阵其中每个位置表示一对变量之间的相关程度。相关性通常通过计算相关系数得到最常见的是皮尔逊相关系数它衡量两个变量之间线性关系的方向与强弱取值范围一般在 -1 到 1 之间。例如data pd.DataFrame({ A: [1, 2, 3, 4, 5], B: [2, 4, 6, 8, 10], C: [1, 3, 5, 7, 9], D: [5, 4, 3, 2, 1]}) corr_matrix data.corr() sns.heatmap(corr_matrix, annotTrue, cmapcoolwarm)plt.show()读取相关性热力图时应重点看颜色的正负与深浅颜色越接近正相关一侧表示两个变量同向变化越明显越接近负相关一侧表示反向变化越明显越接近中间颜色则说明相关性较弱。这里先通过 data.corr() 计算相关性矩阵再用热力图可视化。这种图形特别适合观察• 哪些变量正相关较强• 哪些变量负相关较强• 哪些变量可能包含较多重复信息3、使用热力图时的注意点热力图适合数值矩阵。如果表中混有编号、姓名等非数值列通常应先把它们设置为索引或剔除再绘图。也就是说不是任何二维表都可以原样直接传给 heatmap()。七、箱线图与小提琴图当研究对象不再是“一个变量整体如何分布”而是“一个数值变量在不同类别之间如何分布”时箱线图与小提琴图就会非常常用。它们都属于分类统计图形适合比较不同组之间的集中趋势、离散程度与分布形态。1、什么是箱线图箱线图用于概括一组数值数据的分布特征。它通常展示中位数、上下四分位数、须以及可能的异常值因此比直方图更强调“统计概括”而不是每个区间中的频数。Seaborn 的 boxplot() 正是用这种方式来比较不同类别下数值变量的分布。例如下面用班级作为分类变量用成绩作为数值变量sns.boxplot(datadf, x班级, y成绩) # df 来自文章最前面的示例数据plt.show()这张图可以帮助我们观察• 哪个班级的成绩中位数更高• 哪个班级的成绩波动更大• 是否存在明显偏离总体范围的异常值2、箱线图的适用场景箱线图特别适合做组间比较。如果重点是回答“不同班级的成绩整体水平是否不同”“哪一组更稳定”“是否有异常值”那么箱线图通常比直方图更紧凑也更便于并排比较。也可以加入分组变量例如sns.boxplot(datadf, x班级, y成绩, hue性别)plt.show()这样就能在同一类别下进一步比较子组差异。Seaborn 的分类图体系本身就支持这种按分类变量分层比较的表达方式。3、什么是小提琴图小提琴图与箱线图作用相近也用于比较不同类别下数值变量的分布但它不仅给出统计概括还通过核密度估计展示分布轮廓。可以把它理解为箱线图与密度图的一种结合形式。示例sns.violinplot(datadf, x班级, y成绩)plt.show()在这类图中• 中间位置反映数据的集中区域• 外轮廓的宽窄反映该数值区间的数据密集程度• 图形越宽通常表示该位置附近的数据越集中4、小提琴图的适用场景箱线图强调统计摘要小提琴图则更强调分布形状。如果仅看箱线图我们能知道中位数和四分位范围但不容易看出分布是否呈双峰、是否在某些区间更密集。小提琴图能够把这些形状信息显示出来因此在比较不同类别分布轮廓时往往更直观。例如sns.violinplot(datadf, x班级, y成绩, hue性别)plt.show()这类图不仅能比较组间高低还能帮助判断各组内部的分布形态是否相似。八、其它常用统计图形简介前面介绍的是入门阶段最核心的几类图形。除此之外Seaborn 还提供了若干常用统计图形下面作简要说明。1、散点图scatterplot() 用于观察两个数值变量之间的关系。图中的每一个点通常对应一条观测记录因此它特别适合用来判断变量之间是否存在某种趋势、聚集现象或组间差异。2、折线图lineplot() 用于观察一个变量随另一个变量变化的趋势常见于时间序列、阶段变化和实验过程数据。它适合回答“总体趋势如何变化”这类问题。3、分类散点图这两类图都用于展示分类变量下的原始观测值。stripplot() 通过抖动减少点重叠swarmplot() 则尽量让点彼此不重叠更适合样本量不太大时精细展示每个观测值。4、条形统计图barplot() 用于比较不同类别上的统计估计值例如均值及其误差范围。它不是简单统计个数而是围绕某个数值变量进行聚合后再绘图。5、计数图countplot() 用于统计各类别中观测值的数量。可以把它理解为“面向分类变量的频数图”适合看各类别样本数是否均衡。6、联合分布图jointplot() 用于同时展示两个变量的关系及各自的边际分布。中间区域通常展示双变量关系边缘区域展示单变量分布适合做更紧凑的双变量探索分析。7、回归图regplot() 用于在散点关系基础上加入回归趋势线帮助观察两个变量之间是否存在明显线性趋势。它适合作为散点图的补充。 小结Seaborn 是建立在 Matplotlib 之上的统计绘图库适合用简洁方式完成分布分析、变量关系分析、矩阵数据展示和类别比较。入门阶段应重点掌握直方图、成对关系图、热力图、箱线图与小提琴图并理解不同图形分别服务于什么分析问题。“点赞有美意赞赏是鼓励”

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

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

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…