Python 数据可视化之山脊线图 Ridgeline Plots

文章目录

  • 一、前言
  • 二、主要内容
  • 三、总结

🍉 CSDN 叶庭云https://yetingyun.blog.csdn.net/


一、前言

JoyPy 是一个基于 matplotlib + pandas 的单功能 Python 包,它的唯一目的是绘制山脊线图 Joyplots(也称为 Ridgeline Plots)。

Why are they called joyplots?

Joyplots 是堆叠的、部分重叠的密度图,就是这么简单。它们是一种很好的绘制数据的方式,可以用来直观比较分布,特别是哪些随着一个维度(比如时间)变化的分布。虽然这并不是一种新技术。

在这里插入图片描述

Github 地址:https://github.com/leotac/joypy

安装 joypy,使用 pip install joypy==0.2.6 就好。

在行为差异、特征工程和预测建模等场景中,了解不同组之间的变量分布差异非常有用。在这些情况下,许多数据科学家更喜欢在单一坐标轴上绘制组级分布图,例如直方图或密度图。然而,当群体较多时,简单的组级分布图可能变得混乱且难以理解。

本文将向您介绍一种紧凑而优雅的数据可视化工具:山脊线图。它以清晰的方式展示不同变量或变量类别的分布差异,帮助我们更好地理解数据中的群体特征,从而获得更深入的洞察和启发。


二、主要内容

使用鸢尾花数据集 iris.csv 做实验,这个数据集如下所示:

在这里插入图片描述

打印特征名称和标签,以及输出标签的 value_counts。

print(f"特征:{list(df.columns)[:-1]}")
print(f"标签:{list(df.columns)[-1]}")特征:['SepalLength', 'SepalWidth', 'PetalLength', 'PetalWidth']
标签:Namedf["Name"].value_counts()Iris-setosa        50
Iris-versicolor    50
Iris-virginica     50
Name: Name, dtype: int64
selected_cols = ['SepalLength', 'SepalWidth', 'PetalLength', 'PetalWidth']fig, ax = plt.subplots(figsize=(10, 6), dpi=200)
my_title = 'Distribution of features in the iris dataset'fig, axes = joyplot(data=df,ax=ax,by='Name',column=selected_cols,xlabelsize=14,ylabelsize=14,grid=True,hist=False,color=['#FF0066', '#9400D3','#002FA7', '#FFB900'],legend=True,title=my_title,alpha=0.86,
)fig.savefig("./Figures/山脊图.png", dpi=300)plt.show()

关键参数说明

  • data:数据帧(DataFrame)、系列(Series)或嵌套集合(Nested collection)。常用 pandas 的 DataFrame
  • ax : matplotlib axes 对象,默认为 None。
  • column:字符串或序列。如果传入参数,将用于将数据限制为列的子集。
  • by:对象,可选项。用于划分不同组的变量分布的特征名称。本次实验中是 “Name”。
  • grid:布尔值,默认是 True。是否显示轴网格线。
  • title:绘制的图表的标题。
  • alpha:设置透明度。
  • xlabels、ylabels:布尔值或列表,默认为 True。
  • xlabelsize:整数,默认值 None。如果指定,则更改 X 轴标签尺寸。
  • xrot:浮点数,默认为 None。旋转 X 轴标签的角度。
  • ylabelsize:整数,默认值 None。如果指定,则更改 Y 轴标签尺寸。
  • yrot:浮点数,默认为 None。旋转 Y 轴标签的角度。
  • figsize : 元组。默认情况下,要创建的图形大小(以 inches 为单位)。
  • color:在绘图中使用的一种或多种颜色。可以是字符串或任何可被 matplotib 解释为颜色的东西。通常传入颜色列表。
  • kwds : 其他绘图关键字参数,将传递给 hist / {/} /kde plot 函数。

实际上,这主要涉及一些 matplotlib 绘图参数。用户还可以直接修改源代码,以调整 X 轴、Y 轴、标题和图例的字体大小,从而使生成的山脊线图更加美观。

山脊线图可视化的效果如下图所示

在这里插入图片描述

正如上图所示,山脊线图不仅展示了每个鸢尾花种类四个特征的分布形状和峰值,还直观地展示了不同种类之间的差异。通过将多个组的分布放置在同一张山脊线图上,并使用不同的颜色或线型进行标识,我们可以轻松比较它们之间的相似性和差异性。


三、总结

山脊线图(Ridgeline Plots),也被称为 Joy Plots,是一种用于展示一个或多个组的数据分布的数据可视化方法。

什么是山脊线图?

  • 山脊线图中,每个组的数据分布通过平滑的密度曲线表示,这些曲线沿垂直轴堆叠排列,从而产生类似山脊的视觉效果。
  • 这种图表特别适用于比较不同组的数据分布情况。

为什么要使用山脊线图?

  • 平滑展示数据分布:与传统的条形图或直方图相比,山脊线图提供了一种更平滑、更直观的方式来展示数据的分布情况。
  • 比较能力:山脊线图非常适合比较多个分布的形状和大小,清晰地展示不同组之间的变化和趋势。
  • 空间效率:通过在单个图中堆叠,山脊线图可以有效地利用空间,避免了创建多个单独的密度图。
  • 美观性:山脊线图在视觉上吸引人,用不同的颜色和样式区分不同的组,使得数据更加生动和直观。
  • 趋势识别:可以轻松识别多个群体数据中的共同模式和异常值。
  • 适用于大量数据集:山脊线图适用于展示大量数据集,而不会显得拥挤或不清晰。

如何制作山脊线图?

  • 山脊线图的制作基于核密度估计(Kernel Density Estimation,KDE),这是一种非参数估计概率密度函数的方法。
  • 使用 JoyPy,一个基于 matplotlib + pandas 的轻量级 Python 包,可以轻松绘制山脊线图 Joy Plot。

📚️ 参考链接:

  • 山脊线图(Ridgeline Plots):一个被低估的数据可视化瑰宝
  • HF.050 | 山脊图、密度图,最全总结实现方法在这里!
  • 沈向洋:致 AI 时代的我们 —— 请不要忽视写作的魅力

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

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

相关文章

SpringMVC原理(设计原理+启动原理+工作原理)

文章目录 前言正文一、设计原理1.1 servlet生命周期简述1.2 设计原理小结 二、启动原理2.1 AbstractHandlerMethodMapping 初始化 --RequestMapping注解解析2.2 DispatcherServlet 的初始化2.3 DispatcherServlet#initHandlerMappings(...) 初始化示例说明 三、工作原理 前言 …

python - OSError:错误没有名为 [‘pytorch_model.bin‘

python - OSError:错误没有名为 [‘pytorch_model.bin’] 自己训练的模型存储好了以后 model MT5ForConditionalGeneration.from_pretrained(“ner/best”) 之前还可以跑 现在报错 错误没有名为 [‘pytorch_model.bin’] 还原了一下conda env 把四版变成三版了 …

面试前的准备

面试前的准备 Java程序员校招与社招的区别 校招和社招都是企业招聘形式的一种,只是面向的对象不同。校招 只允许在校生参加,社招理论上是任何人都能参加的(包括在校生)。 但是,无论是社招还是校招,它的难度都取决于你的水平高低。…

Unity SRP 管线【第十讲:SRP/URP 图形API】

Unity 封装的图形API 文章目录 Unity 封装的图形API一、 CommandBuffer 要执行的图形命令列表1. CommandBuffer 属性2. CommandBuffer 常用图形API(方法)(1)设置(2)获取临时纹理 GetTemporaryRT以及释放(3)设置纹理为渲染目标 SetRenderTarget(4)Command…

每日OJ题_递归①_力扣面试题 08.06. 汉诺塔问题

目录 递归算法原理 力扣面试题 08.06. 汉诺塔问题 解析代码 递归算法原理 递归算法个人经验:给定一个任务,相信递归函数一定能解决这个任务,根据任务所需的东西,给出函数参数,然后实现函数内容,最后找出…

Shell 学习笔记(三)-shell变量

Shell 语言是一种动态类型和弱类型语言, 因此,在Shell中无需显示地声明变量, 且变量的类型会根据不同的操作符而发生变化. 静态类型语言: 在程序编译期间就确定变量类型的语言, 如java, C等 动态类型语言: 在程序运行期间才确定变量类型的语言, 如PHP, Python等. 一 shell变量…

Matplotlib初探:认识数据可视化与Matplotlib

Matplotlib初探:认识数据可视化与Matplotlib Fig.1 利用Matplotlib进行数据可视化( 可视化代码见文末) 🌵文章目录🌵 🌳引言🌳🌳一、数据可视化简介🌳🌳二、Matplotlib库简介&#x…

【数学建模】【2024年】【第40届】【MCM/ICM】【B题 搜寻潜水器】【解题思路】

一、题目 (一)赛题原文 2024 MCM Problem A: Resource Availability and Sex Ratios Maritime Cruises Mini-Submarines (MCMS), a company based in Greece, builds submersibles capable of carrying humans to the deepest parts of the ocean. A …

WordPress每天发布60s插件

源码名称:WordPress每天发布60s插件 适用平台:WordPress Wordpress还是比较适合个人博客网站,这个60秒插件适合一些喜欢自动发新闻早报晚报人员。 wordpress一直以来都是建立个人博客网站比较适合的脚手架,非常合适个人使用。 小程序源码就找 源码软件…

【Java数据结构】ArrayList和LinkedList的遍历

一&#xff1a;ArrayList的遍历 import java.util.ArrayList; import java.util.Iterator; import java.util.List;/*** ArrayList的遍历*/ public class Test {public static void main(String[] args) {List<Integer> list new ArrayList<>();list.add(5);list…

如何将 Hexo 部署到 GitHub Pages

引言 在数字时代&#xff0c;拥有个人博客是展示自己想法、分享知识和技能的绝佳方式。Hexo 是一个基于 Node.js 的静态博客生成器&#xff0c;它结合了简洁性和功能性&#xff0c;让我们可以轻松地建立并维护一个博客。而 GitHub Pages 提供了一个免费的平台来托管这些静态网站…

Stable Diffusion主流UI详细介绍

Stable Diffusion目前主流的操作界面有WebUI、ComfyUI以及Fooocus 这里webui和fooocus在人机交互上的逻辑是一样的&#xff0c;fooocus界面更加简洁。 comfyui是在人机交互上是采用流程节点的交互逻辑&#xff0c;和上面略有区别。 界面分别如下&#xff1a; WebUI界面如下 we…

java 调用智谱ai 大模型的完整步骤(国内的 AI 大模型 对话)

要使用java 调用智谱AI的API进行异步调用&#xff0c;您需要遵循以下步骤&#xff1a; 1. **获取API密钥**&#xff1a; - 您需要从智谱AI平台获取一个API密钥&#xff08;API Key&#xff09;&#xff0c;这个密钥将用于所有API请求的身份验证。 2. **SDK源…

品牌之门:概率与潜力的无限延伸

在品牌的世界里&#xff0c;每一个成功的推广都像是打开一扇门&#xff0c;从未知走向已知&#xff0c;从潜在走向显现。这扇门&#xff0c;既是品牌的起点&#xff0c;也是品牌发展的无限可能。 品牌&#xff0c;就像一扇紧闭的门&#xff0c;它静静地矗立在那里&#xff0c;…

fluent脱硝SCR相对标准偏差、氨氮比、截面速度计算

# -*- coding: utf-8 -*- """ Created on Wed Sep 20 20:40:30 2023 联系QQ:3123575367&#xff0c;专业SCR脱硝仿真。 该程序用来处理fluent通过export-solution-ASCII-Space导出的数据&#xff0c;可计算标准偏差SD、相对标准偏差RSD,适用于求解平面的相对均匀…

这种学习单片机的顺序是否合理?

这种学习单片机的顺序是否合理&#xff1f; 在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「单片机的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01…

单片机学习笔记---DS18B20温度传感器

目录 DS18B20介绍 模拟温度传感器的基本结构 数字温度传感器的应用 引脚及应用电路 DS18B20的原理图 DS18B20内部结构框图 暂存器内部 单总线介绍 单总线电路规范 单总线时序结构 初始化 发送一位 发送一个字节 接收一位 接收一个字节 DS18B20操作流程 指令介…

OpenAI ChatGPT 记忆功能怎么实现?

你的聊天助手现在能“记住”你的对话了&#xff01; 2月14日凌晨&#xff0c;OpenAI宣布正在测试ChatGPT的新功能——记住用户提问内容&#xff0c;并自由控制内存。这意味着&#xff0c;ChatGPT能帮你记住那些重要的聊天内容&#xff0c;让你的对话更流畅、更自然。 想象一下…

高效的工作学习方法

1.康奈尔笔记法 在这里插入图片描述 2. 5W2H法 3. 鱼骨图分析法 4.麦肯锡7步分析法 5.使用TODOLIST 6.使用计划模板&#xff08;年月周&#xff09; 7. 高效的学习方法 成年人的学习特点&#xff1a; 快速了解一个领域方法 沉浸式学习方法&#xff1a; 沉浸学习的判据&am…

2024年 前端JavaScript入门到精通 第一天

主要讲解JavaScript核心知识&#xff0c;包含最新ES6语法&#xff0c;从基础到API再到高级。让你一边学习一边练习&#xff0c;重点知识及时实践&#xff0c;同时每天安排大量作业&#xff0c;加深记忆&#xff0c;巩固学习成果。 1.1 基本软件与准备工作 1.2 JavaScript 案例 …