【Seaborn 学习笔记】P1.关系图:散点图 scatterplot、折线图 lineplot
matplotlib 画图seaborn 画变量关系seaborn本质上是在 matplotlib 的画布上画图安装 Seaborn使用 pip 安装pip install seaborn在 Python 中导入 Seaborn 库导入并取别名为 snsimport seaborn as sns加载 Seaborn 内置数据集Seaborn 拥有内置数据集可以直接加载返回 DataFrame 类型的数据集1. 查看内置数据集import seaborn as sns dataset_names sns.get_dataset_names() print(dataset_names)返回如下结果[anagrams, anscombe, attention, brain_networks, car_crashes, diamonds, dots, dowjones, exercise, flights, fmri, geyser, glue, healthexp, iris, mpg, penguins, planets, seaice, taxis, tips, titanic]2. 加载数据集返回的是 pandas 的 DataFrame 数据类型import seaborn as sns # 例如加载 iris 数据集 df sns.load_dataset(iris) # 返回 DataFrame 数据类型 # 查看前五条记录 print(df.head())结果如下sepal_length sepal_width petal_length petal_width species0 5.1 3.5 1.4 0.2 setosa1 4.9 3.0 1.4 0.2 setosa2 4.7 3.2 1.3 0.2 setosa3 4.6 3.1 1.5 0.2 setosa4 5.0 3.6 1.4 0.2 setosa散点图绘制 sns.scatterplot每条记录对应一个点seaborn 的 sns.scatterplot 相比 matplotlib 的 plt.scatter 多了三个关键统计语义hue分组指定一个特征给 hue对于不同的该特征绘制的点映射不同颜色style点的样式指定一个特征给 style对于不同的该特征绘制的点会使用不同的样式。用于区分第二分类维度size点的大小指定一个特征给 size若一条记录的该特征越大绘制的点也就越大示例绘制 penguins 数据集中企鹅的鳍长flipper_length_mm关于体重body_mass_g的散点图。首先加载数据集import seaborn as sns # 加载数据集 df sns.load_dataset(penguins) df.head()peguins 数据集形如1. 绘制一个普通的散点图# 绘制散点图 sns.scatterplot(datadf, xflipper_length_mm, ybody_mass_g) # seaborn 会自动忽略含有 NaN 的行不会报错 plt.show() # 使用 mpl 来显示图片 - sns 在 mpl 的画布上画图由 mpl 来显示图片绘图结果如下2. 加入参数 hue对指定特征不同的记录在画图时映射不同的颜色# 加入分类变量 hue sns.scatterplot( datadf, xflipper_length_mm, ybody_mass_g, huespecies # 将对每个点根据其 species 标注不同颜色 ) # 根据 hue 映射颜色 # seaborn 会自动生成 legend plt.show()绘图结果如下3. 加入参数 style对指定特征不同的记录在画图时使用不同的点的样式# 再加入点的样式 style sns.scatterplot( datadf, xflipper_length_mm, ybody_mass_g, huespecies, # 将对每个点根据其 species 标注不同颜色 stylesex # 将对每个点根据其 sex 选择不同的点的样式 ) # 根据 style 选择不同标记 # 适合在 hue 的基础上进行二次分类的情形 plt.show()绘图结果如下使用 Axes 对象精细化控制Seaborn 的大部分绘图函数都会返回一个 matplotlib.axes.Axes 对象因此不需要显示创建画布就可以拿到绘图后的 Axes并通过这个 Axes 对绘制的图形进行精细化控制。Axes 对象有关方法方法功能ax.set_title(标题)标题ax.set_xlabel(x轴标签)ax.set_ylabel(y轴标签)坐标轴标签ax.set_xlim(left?, right?)ax.set_ylim(bottom?, top?)坐标轴范围ax.set_xticks(x值的序列)ax.set_yticks(y值的序列)刻度ax.legend(title图例标题, locupper right)loc 表示图例的位置还可为 1. 最佳位置best自动选最不挡数据的位置2. 四个角与四条边中间upper, lower, center 与 left, right, center 的组合中间用空格隔开例如 upper center 表示上方居中3. 坐标系正中间center容易挡住数据图例ax.grid(True) # x、y轴网格线ax.grid(True, axis‘x) # 仅 x 轴网格线ax.grid(True, axisy) # 仅 y 轴网格线网格ax.axhline()ax.axvline()参考线ax.text()ax.annotate()文本ax.spines[] # 用字典形式对某边框进行操作包括边框显示与隐藏、粗细、颜色等# 隐藏上、右边框for spine in [top, right]:ax.spines[spine].set_visible(False)边框1. 示例import seaborn as sns import matplotlib as mpl import matplotlib.pyplot as plt df sns.load_dataset(penguins) df.head() mpl.rcParams[font.family] SimHei mpl.rcParams[font.size] 15 # 这里将返回的 Axes 对象存变量 ax ax sns.scatterplot( datadf, xflipper_length_mm, ybody_mass_g, huespecies ) # 添加 x、y 轴标签 ax.set_xlabel(鳍长 (mm)) ax.set_ylabel(体重 (g)) ax.legend(title物种) # 修改图例标题 ax.grid(True) # 网格线 plt.show()绘图结果如下2. 图例外置若图例在图中会遮挡数据可以使用 ax.legend() 方法将其放在图的外面要配合 plt.tight_layout() 使用否则图例可能会跑出画布ax.legend( title图例标题, bbox_to_anchor(x坐标, y坐标), # 对齐坐标(0, 0) 表示 ax 的左下角(1, 1) 表示 ax 的右上角 loc对齐方式 # 指定图例的哪个角或边中点与该坐标对齐 )例如将图例放在图的右侧常用写法ax.legend( title图例标题, bbox_to_anchor(1.02, 1), # 对齐坐标(1.02, 1)表示图的右上角往右0.02距离的点 locupper left # 指定图例的左上角与 (1.02, 1) 点对齐 )结果形如散点图练习1. 使用 penguins 数据集x 轴为喙长bill_length_mmy 轴为喙深bill_depth_mm并且按 species 映射颜色画出散点图加上合适的标题和轴标签画在子图12. 在 1 的基础上用 sex 区分性别画在子图2图例均放在图的右侧# 本人思路仅供参考 import seaborn as sns import matplotlib as mpl import matplotlib.pyplot as plt df sns.load_dataset(penguins) df.head() mpl.rcParams[font.family] SimHei mpl.rcParams[font.size] 15 # 使用 2×1 的垂直布局便于对比“仅按种类着色”与“按种类性别区分”的差异 fig, (ax1, ax2) plt.subplots(2, 1, figsize(12, 14), dpi100) # 同时获得画布 fig 与两幅子图 ax1, ax2 # 子图1 sns.scatterplot( datadf, xbill_length_mm, ybill_depth_mm, huespecies, axax1 ) ax1.set_title(喙长-喙深 对比图) ax1.set_xlabel(喙长 (mm)) ax1.set_ylabel(喙深 (mm)) # 将图例放到图的右侧 ax1.legend( title分组, locupper left, # 图例的左上角 bbox_to_anchor(1.02, 1) # 对齐到 ax1 的右侧 ) # 子图2 sns.scatterplot( datadf, xbill_length_mm, ybill_depth_mm, huespecies, stylesex, axax2 ) ax2.set_title(喙长-喙深 对比图) ax2.set_xlabel(喙长 (mm)) ax2.set_ylabel(喙深 (mm)) # 将图例放到图的右侧 ax2.legend( title物种 / 性别, locupper left, # 图例的左上角 bbox_to_anchor(1.02, 1) # 对齐到 ax2 的右侧 ) plt.tight_layout() plt.show()绘图结果如下折线图绘制 sns.lineplot

相关新闻

Retriever And Chain With LangChain 完整解读

Retriever And Chain With LangChain 完整解读

Retriever And Chain With LangChain 完整解读Retriever(检索器)和 Chain(链)是 LangChain 中 RAG(Retrieval-Augmented Generation,检索增强生成)最核心的两个组件。很多初学者容易把它们混淆&…

2026/10/21 6:43:38 阅读更多 →
Retriever  Chain in LangChain 完整深度解读

Retriever Chain in LangChain 完整深度解读

Retriever & Chain in LangChain 完整深度解读适配 LangChain 0.1 新版 API(区分 legacy RetrievalQA 与现代 LCEL 写法) 核心定位:RAG 的两大基础组件 ——Retriever(检索器)负责找文档,Chain&#xf…

2026/10/22 7:30:24 阅读更多 →
Claude三大模型代码能力评测与选型指南

Claude三大模型代码能力评测与选型指南

1. 项目背景与核心问题最近在开发者社区看到不少关于Claude不同模型版本的讨论,尤其是针对代码生成能力的对比。作为一个长期使用AI辅助编程的工具人,我决定对Claude的三个主要模型——Opus、Sonnet和Haiku进行一次系统的横向评测。这次测试主要聚焦两个…

2026/10/21 1:13:44 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/10/22 10:18:38 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/10/22 11:01:53 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/22 9:44:47 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/10/22 10:42:00 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/10/22 10:40:08 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/10/22 10:56:37 阅读更多 →

日新闻

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/22 1:47:45 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/22 21:33:42 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/22 5:12:39 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/22 22:56:44 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/22 22:56:12 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/22 19:06:46 阅读更多 →