科研绘图(一)山脊图

从今日开始,为大家开辟一个新的系列科研绘图。同一个竞赛下,大家都近乎相同的解题思路下。之所以能出现一等二等三等奖的区别很大部分都在于结果的可视化,为了能更好地帮助大家进行可视化,今后将专门推出一个可视化板块,推出各种好看实用的可视化图形。第一次给大家推荐的是山脊图,用以描述多个数据的分布方式。数模论文汇中,可以用作初始数据的可视化表达,即用这样图来解释题目给出了什么样的数据。下面是详细内容:

山脊图(Ridge Plot),也称为Joy Plot。它是一种数据可视化的方法,用于展示一个或多个组的数据分布。在山脊图中,每个组的数据分布通过平滑的密度曲线表示,这些曲线沿垂直轴堆叠排列,从而产生类似山脊的视觉效果。这种图表尤其适用于比较不同组的数据分布情况。

山脊图的制作基于核密度估计(Kernel Density Estimation, KDE),这是一种估计概率密度函数的非参数方式。与传统的条形图或直方图相比,山脊图提供了一种更平滑、更直观的方式来展示数据的分布情况。它特别适合于展示大量组的数据分布,可以帮助观察者理解不同组之间的差异和相似之处。

山脊图(Ridge Plot)是一种数据可视化工具,主要用于比较多个分布。以下是山脊图的一些优点和缺点:

优点

1. 比较能力:非常适合比较多个分布的形状和大小。它能清晰地展示不同组之间的变化和趋势。  

2. 空间效率:通过在单个图中堆叠,山脊图可以有效地利用空间,显示多组数据,避免了创建多个单独的密度图。

3. 美观性:山脊图在视觉上吸引人,可以用不同的颜色和样式来区分不同的组,使得数据更加生动和直观。

4. 趋势识别:可以轻松识别多个群体数据中的共同模式和异常值。

5. 数据量:适用于展示大量数据集,而不会显得拥挤或不清晰。

缺点

1. 过度拥挤:如果组的数量过多,山脊图可能会显得拥挤,使得个别分布难以辨认。

2. 精确度:由于重叠,难以精确读取特定点的值,尤其是在分布之间的重叠区域。

3. 数值比较:虽然能够展示分布趋势,但不适合精确比较不同组之间的数值。

4. 边缘效应:在堆叠的密度图中,可能会产生误导,例如,边缘的分布可能看起来比实际更少。

本次更新主要以matlab为主,python实现代码也放于文末展示

首先是,绘制最初始的,最简单的山脊图,如下所示

% 清空环境变量和窗口
clear; close all;

% 生成模拟数据
data = [];
groups = 6;
for i = 1:groups
data = [data; normrnd(i, 0.5, [200, 1])];
end

% 为每组数据创建一个标签
group = repelem(1:groups, 200)';

% 创建一个图形窗口
figure;

% 对每组数据进行绘制
for i = 1:groups
% 选择当前组的数据
subset = data(group == i);
% 计算核密度估计
[f, xi] = ksdensity(subset);
% 绘制密度曲线,并上移相应的高度以创建堆叠效果
plot(xi, f + i, 'LineWidth', 2);
hold on;
end

% 添加图例和坐标轴标签
legend('Group 1', 'Group 2', 'Group 3', 'Group 4', 'Group 5', 'Group 6');
xlabel('Value');
ylabel('Density');
title('Ridge Plot Example');

% 显示图形
hold off;

为了进一步美化图形,添加一些元素和调整一些参数来增强其视觉效果。

% 清空环境变量和窗口
clear; close all;

% 生成模拟数据
data = [];
groups = 6;
colors = jet(groups); % 使用彩虹色系
for i = 1:groups
data = [data; normrnd(i, 0.5, [200, 1])];
end

% 为每组数据创建一个标签
group = repelem(1:groups, 200)';

% 创建一个图形窗口
figure;

% 对每组数据进行绘制
for i = 1:groups
% 选择当前组的数据
subset = data(group == i);
% 计算核密度估计
[f, xi] = ksdensity(subset);
% 绘制密度曲线,并上移相应的高度以创建堆叠效果
plot(xi, f + i, 'LineWidth', 2, 'Color', colors(i, :));
hold on;
end

% 添加图例和坐标轴标签
legend('Group 1', 'Group 2', 'Group 3', 'Group 4', 'Group 5', 'Group 6', ...
'Location', 'northeastoutside');
xlabel('Value');
ylabel('Density');
title('Enhanced Ridge Plot Example');

% 设置坐标轴界限和网格
xlim([min(data), max(data)]);
ylim([1, groups + 1]);
grid on;

% 设置字体大小
set(gca, 'FontSize', 10);

% 显示图形
hold off;

下面两个是matalb美化后的版本
下面进行python展示

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from scipy.stats import gaussian_kde

# 如果您想尝试使用默认样式,可以注释掉下面这行代码
# plt.style.use('seaborn')

# 生成模拟数据
groups = 6
data = pd.DataFrame({f'Group_{i}': np.random.normal(loc=i, scale=0.5, size=200) for i in range(1, groups + 1)})

# 转换为“长格式”
data_long = pd.melt(data, var_name='Group', value_name='Value')

# 初始化图形
fig, ax = plt.subplots(figsize=(10, 6))

# 对每组数据进行绘制
for i, group in enumerate(data.columns):
    # 选择当前组的数据
    subset = data[group]

    # 计算核密度估计
    density = gaussian_kde(subset)
    xs = np.linspace(subset.min(), subset.max(), 200)
    ys = density(xs)

    # 绘制密度曲线,并上移相应的高度以创建堆叠效果
    ax.plot(xs, ys + i, lw=2)

# 添加图例和坐标轴标签
ax.legend([f'Group {i + 1}' for i in range(groups)])
ax.set_xlabel('Value')
ax.set_ylabel('Density')
ax.set_title('Ridge Plot Example')

# 显示图形
plt.show()

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

B端产品经理学习-权限管理

目录 权限管理的原则 常见的权限管理模型 总结 对企业而言,最重要的一个资源就是有价值的专有信息,也就是自己知道,而其他企业不知道的信息,因此,专有信息是企业的重要竞争力,权限管理的价值体现在专有信…

centos下升级git版本

1 问题描述 centos7系统默认的git安装版本是1.8,但是在项目构建中发现git版本过低,导致构建AI模型环境时出现各种错误,于是用源码编译的方式进行升级,同时该文章也适用于安装新的git。 2. 升级安装 2.1 第一步卸载原有的git r…

HarmonyOS应用开发学习笔记 UI布局学习 相对布局 (RelativeContainer)

UI布局学习 之 相对布局 (RelativeContainer) 官方文档 一、关键字 RelativeContainer, alignRules(适配规则) Text(Text02).alignRules({left: { anchor: text01, align: HorizontalAlign.Start },top: { anchor: t…

精通推荐算法4:经典DNN框架特征交叉模型 Deep Crossing(面试必备)

微软2016年提出的Deep Crossing模型奠定了深度学习精排模型的基本架构,具有十分重要的意义。它采用“Embedding MLP”的结构,成为目前推荐算法的基本范式。通过深度神经网络,实现大规模特征自动组合,大大减少了对人工构造交叉组合…

(一)Spring Cloud 直击微服务作用、架构应用、hystrix降级

直击微服务作用 微服务架构: 遇到了什么问题? 将单体架构拆分成微服务架构后,如果保证多个服务(项目)正常运行? 哪个技术可以解决这个问题? 微服务技术 服务治理: 服务管理,维护服务与服务之间的关系 这个技术如何使用? netflix/网…

智能化输电线路定位技术:提升电网运行效率的未来发展方向

随着科技的不断发展,电力行业也在逐步引入智能化技术,以提高输电线路的运行效率和安全性。在这篇文章中,恒峰智慧科技将探讨一种新的输电线路定位技术——分布式行波测量技术,它如何帮助我们实现这一目标。 一、分布式故障定位及隐…

游泳耳机排行榜前四名,分享几款值得推荐的游泳耳机

游泳是一项全面锻炼身体的运动,然而,水的阻力有时让人感到运动的笨拙和单调。为了让游泳更具趣味性和挑战性,选择一款高品质的游泳耳机至关重要。以下是游泳耳机排行榜前四名,以及几款强烈推荐的游泳耳机,它们结合防水…

Python教程(22)——Python面向对象的属性和方法

在Python面向对象编程中,属性和方法是类及其对象的重要组成部分。如果说封装、继承和多态是面向对象编程中的思想,那么类的属性和方法就是骨架,因为有属性和方法,面向对象编程才变的有血有肉。 属性 属性是类或对象所拥有的数据&…

UWB 技术及应用

超宽带技术为工业自动化提供独特优势,是首要的室内定位技术。 UWB 因其相对于 RFID、BLE 或 WiFi 等同类技术的众多优势而被认为是室内定位技术的黄金标准。它是基于位置的自动化的理想解决方案。 UWB 结合了短光速脉冲,可在宽带宽上精确测量信号到达时…

linux离线安装docker20.10.7 版本(亲测有效)

目录 1 下载2 安装2.1 新建docker.service2.2 为什么要写docker.service2.3 启动docker2.5 安装docker-compose2.5.1 为什么安装2.5.2 安装 3 /usr/local/bin/ 和 /usr/bin 区别 1 下载 将这个上传到linux 服务器的 随便一个目录 2 安装 解压离线安装包 tar -zxvf docker-20.1…

面试算法105:最大的岛屿

题目 海洋岛屿地图可以用由0、1组成的二维数组表示,水平或竖直方向相连的一组1表示一个岛屿,请计算最大的岛屿的面积(即岛屿中1的数目)。例如,在下图中有4个岛屿,其中最大的岛屿的面积为5。 分析 将岛屿…

局域网实现文件自动同步

软件下载地址: https://dbrwe.blog.csdn.net/article/details/132331206?spm1001.2014.3001.5502 打开【自动上传与同步】配置 在下面 自动同步 自动回传打上钩就可以同步或者下载文件

生成式人工智能市场规模、趋势和统计数据(2024-2026)

生成式人工智能市场规模、趋势和统计数据(2024-2026) 目录 生成式人工智能市场规模、趋势和统计数据(2024-2026)一、生成式人工智能行业亮点二、生成式人工智能市场规模三、生成式人工智能市场增长预测四、生成式人工智能采用统计…

结构型设计模式——适配器模式

适配器模式 这个更加好理解,就是做适配功能的类,例如,现在手机没有了圆形耳机接口,只有Type-C接口,因此你如果还想要使用圆形耳机的话需要买个圆形接口转Type-C的转换器(适配器),这…

再不收藏就晚了,Axure RP Pro 各版本大集合

Axure RP Pro下载链接 https://pan.baidu.com/s/1hRJRY6t0ZONKhdwvykAc3g?pwd0531 1.鼠标右击【Axure RP Pro9.0】压缩包(win11及以上系统需先点击“显示更多选项”)选择【解压到 Axure RP Pro9.0】。 2.打开解压后的文件夹,鼠标右击【Axu…

基于ssm的一家运动鞋店的产品推广网站的设计论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本一家运动鞋店就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息&am…

整理的十大算法和十大排序,分别用汇编语言,C语言,C++,java,python编写实现

整理的十大算法和十大排序,分别用汇编语言,C语言,C,java,python编写实现十大算法,分别用分别用C语言,C,java,python编写实现 Floyd Warshall算法 http://www.net188.com/thread-616-1-1.html …

<软考高项备考>《论文专题 - 57 干系人管理(1) 》

1 论文基础 1.1 写作要点 过程定义、作用写作要点、思路识别干系人识别干系人是定期识别项目干系人,分析和记录他们的利益、参与度、相互依赖性、影响力和对项目成功的潜在影响的过程。作用:使项目团队能够建立对每个干系人或干系人群体的适度关注。本项目里有哪些…

Qt之有趣的数字钟

一.效果 基于网络代码修改,支持时、分、秒;支持滑动、翻页和旋转。 二.实现 #include <QtCore> #include <QPainter> #include <QAction> #include <QWidget> #include <QMainWindow> #include <QTimer> #include <QKeyEvent> #…

TDengine 签约西电电力

近年来&#xff0c;随着云计算和物联网技术的迅猛发展&#xff0c;传统电力行业正朝着数字化、信息化和智能化的大趋势迈进。在传统业务基础上&#xff0c;电力行业构建了信息网络、通信网络和能源网络&#xff0c;致力于实现发电、输电、变电、配电和用电的实时智能联动。在这…
最新文章