基于matlab的密度散点图绘制

1. 什么是密度散点图?

密度散点图就是在普通散点图的基础上,基于样本点一定范围的样本数计算该样本点的密度,以不同的颜色来显示样本点密度的大小,这样能够直观的显示出数据的空间聚集情况,如下图分别是二维和三维密度散点图

8425425e7e3938936bf724a74fc0402

Matlab进阶绘图第25期—三维密度散点图

2. 密度散点图绘制思路

2.1 网格划分

以二维散点图为例,将坐标轴范围划分为一系列大小相同的格网,统计每一个格网内部的样本点数除以格网面积,将所得结果作为该格网内样本点的密度,根据实际需要决定是否需要将密度进行归一化处理,这种方法计算量小,效率高,但效果相对较差

2.2 空间搜索

以二维散点图为例,对某一样本点搜索给定半径范围内的样本数,样本数除以搜索圆的面积作为样本点的密度,同样根据实际使用需要决定是否需要将密度进行归一化处理,这种方法计算量大,效率较低,但效果更好

3. matlab绘制密度散点图

基于网格划分的密度计算函数

function density = density_Grid(data,nd)
% 功能:利用格网划分提取离散点密度特征
% 输入:data   - 原始数据
% 输入:nd - 划分格网数
% 输出:density - 样本密度向量 
M = size(data,1);
N = size(data,2);
data_max = max(data);
data_min = min(data);
data_interval = (data_max - data_min)/nd;
if N == 2data_freq = zeros(nd,nd);data_index = zeros(M,N);for i = 1:Mx = data(i,1);y = data(i,2);c = min(floor((x - data_min(1))/data_interval(1))+1,nd);r = min(floor((data_max(2)-y)/data_interval(2))+1,nd);data_freq(r,c) = data_freq(r,c)+1;data_index(i,:) = [r,c]; end
elsedata_freq = zeros(nd,nd,nd);for i = 1:Mx = data(i,1);y = data(i,2);z = data(i,3);c = min(floor((x - data_min(1))/data_interval(1))+1,nd);r = min(floor((data_max(2)-y)/data_interval(2))+1,nd);v = min(floor((z - data_min(3))/data_interval(3))+1,nd);data_freq(r,c,v) = data_freq(r,c,v)+1;data_index(i,:) = [r,c,v];end
end
s = 1;
for i = 1:Ns = s * data_interval(i);
end
data_freq = data_freq./s;
density = zeros(M,1);
if N==2for i = 1:Mr = data_index(i,1);c = data_index(i,2);density(i,1) = data_freq(r,c);end
elsefor i = 1:Mr = data_index(i,1);c = data_index(i,2);v = data_index(i,3);density(i,1) = data_freq(r,c,v);end
end
% 密度归一化
max_density = max(density);
density = density./max_density;
end

基于空间搜索的密度计算函数

function density = density_KD(data,radius)
% 功能:利用KD树提取离散点密度特征
% 输入:data   - 原始数据
% 输入:radius - 搜索半径
% 输出:density - 样本密度向量 
M = size(data,1);
N = size(data,2);
density = zeros(M,1);
idx = rangesearch(data(:,1:N),data(:,1:N),radius,'Distance','euclidean','NSMethod','kdtree');
if N=2s = pi*radius^2
elses = 3/4*pi*radius^3
end
for i = 1:Mdensity(i,1) = length(idx{i})/s;
end
% 密度归一化
max_density = max(density);
density = density./max_density;
end

绘图函数

% 数据读取
% xbly_data = readtable("xiboliya.xlsx");
% xbly_data = table2array(xbly_data)
% xbly_a = xbly_data(:,2);
% xbly_dem = xbly_data(:,3);
% xbly_slope = xbly_data(:,4);
% xbly_ndvi = xbly_data(:,5);
% scatterDensity(xbly_slope(1:10:528523),xbly_a(1:10:528523),"slope","a")
function scatterDensity(x,y,xtitle,ytitle)
data=[x,y];
density_2D = density_KD(data(:,1:2),1);%将density2D_KD放在该代码同一路径下
% density_2D = density_Grid(data(:,1:2),40000);
scatter(x,y,10, density_2D, '.');
%设置色带
colormap('jet');
hXLabel = xlabel(xtitle);
hYLabel = ylabel(ytitle);
% 坐标轴美化
set(gca, 'Box', 'on', ...                                        % 边框'XGrid', 'off', 'YGrid', 'off', ...                      % 网格'TickDir', 'in', 'TickLength', [.015 .015], ...          % 刻度'XMinorTick', 'on', 'YMinorTick', 'on', 'YTick', 0:2:10,'YLim', [0,10]);            % 小刻度
% 字体和字号
set(gca, 'FontName', 'TimesNewRoma')
set([hXLabel, hYLabel],'FontName', 'TimesNewRoma')
set(gca, 'FontSize', 10)
set(gca, 'FontName', 'TimesNewRoma')
set([hXLabel, hYLabel],'FontSize', 11)
% 背景颜色
set(gca,'Color',[0 0 1]);
%设置色带显示
c = colorbar;
set(c,'tickdir','out');
%色带坐标范围及显示间隔
set(c,'YTick',0:0.2:1.0); 
% 保存结果
% saveas(gcf,strcat(xtitle,"_",ytitle,".fig"));
end

网格划分

slope_a1

空间搜索

slope_a

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

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

相关文章

###C语言程序设计-----C语言学习(11)#数据的存储和基本数据类型

前言:感谢您的关注哦,我会持续更新编程相关知识,愿您在这里有所收获。如果有任何问题,欢迎沟通交流!期待与您在学习编程的道路上共同进步。 一. 数据的存储 1.整型数据的存储 计算机处理的所有信息都以二进制形式表示…

Nginx实战:1-安装搭建

目录 前言 一、yum安装 二、编译安装 1.下载安装包 2.解压 3.生成makefile文件 4.编译 5.安装执行 6.执行命令软连接 7.Nginx命令 前言 nginx的安装有两种方式: 1、yum安装:安装快速,但是无法在安装的时候带上想要的第三方包 2、…

windowsserver 2016 PostgreSQL9.6.3-2升级解决其安全漏洞问题

PostgreSQL 身份验证绕过漏洞(CVE-2017-7546) PostgreSQL 输入验证错误漏洞(CVE-2019-10211) PostgreSQL adminpack扩展安全漏洞(CVE-2018-1115) PostgreSQL 输入验证错误漏洞(CVE-2021-32027) PostgreSQL SQL注入漏洞(CVE-2019-10208) PostgreSQL 安全漏洞(CVE-2018-1058) …

DolphinScheduler-3.2.0 集群搭建

本篇文章主要记录DolphinScheduler-3.2.0 集群部署流程。 注:参考文档: DolphinScheduler-3.2.0生产集群高可用搭建_dophinscheduler3.2.0 使用说明-CSDN博客文章浏览阅读1.1k次,点赞25次,收藏23次。DolphinScheduler-3.2.0生产…

NGINX upstream、stream、四/七层负载均衡以及案例示例

文章目录 前言1. 四/七层负载均衡1.1 开放式系统互联模型 —— OSI1.2 四/七层负载均衡 2. Nginx七层负载均衡2.1 upstream指令2.2 server指令和负载均衡状态与策略2.2.1 负载均衡状态2.2.2 负载均衡策略 2.3 案例 3. Nginx四层负载均衡的指令3.1 stream3.2 upstream指令3.3 四…

基于SpringBoot+Vue的服装销售商城系统

末尾获取源码作者介绍:大家好,我是墨韵,本人4年开发经验,专注定制项目开发 更多项目:CSDN主页YAML墨韵 学如逆水行舟,不进则退。学习如赶路,不能慢一步。 目录 一、项目简介 二、开发技术与环…

【知识整理】接手新技术团队、管理团队

引言 针对目前公司三大技术中心的不断升级,技术管理岗位要求越来越高,且团队人员特别是管理岗位的选择任命更是重中之重,下面针对接手新的技术团队做简要整理; 一、实践操作 1、前期准备 1、熟悉情况: 熟悉人员&am…

【Linux环境基础开发工具的使用(yum、vim、gcc、g++、gdb、make/Makefile)】

Linux环境基础开发工具的使用yum、vim、gcc、g、gdb、make/Makefile Linux软件包管理器- yumLinux下安装软件的方式认识yum查找软件包安装软件如何实现本地机器和云服务器之间的文件互传卸载软件 Linux编辑器 - vimvim的基本概念vim下各模式的切换vim命令模式各命令汇总vim底行…

【开源】SpringBoot框架开发个人健康管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 健康档案模块2.2 体检档案模块2.3 健康咨询模块 三、系统展示四、核心代码4.1 查询健康档案4.2 新增健康档案4.3 查询体检档案4.4 新增体检档案4.5 新增健康咨询 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpri…

如何入门AI Agent?

随着chatgpt问世,大模型已经在加速各行各业的变革,这是我之前对AI Agent行业的粗浅判断。 下面给大家介绍一下如何制作AI Agent,我会用我开发的全赞AI为例子进行简要的介绍,下面是一种工具型AI Agent的框架图 这是一个大量使用工具…

docker复习笔记01(小滴课堂)安装+部署mysql

查看内核版本。 关闭防火墙: 查看docker版本: 下载阿里yum源: 再看一下yum版本都有哪些: 我们可以看的docker-ce了。 安装它: 设置docker服务开机启动: 更新日志文件: 启动docker: …

LLM之LangChain(七)| 使用LangChain,LangSmith实现Prompt工程ToT

如下图所示,LLM仍然是自治代理的backbone,可以通过给LLM增加以下模块来增强LLM功能: Prompter AgentChecker ModuleMemory moduleToT controller 当解决具体问题时,这些模块与LLM进行多轮对话。这是基于LLM的自治代理的典型情况,…

15.3 Redis入门(❤❤❤❤)

15.3 Redis入门❤❤❤❤ 1. redis简介与配置1.1 简介1.2 Windows安装1.3 Linux安装1.4 守护进程方式启动1.5 客户端启动与使用1.6 指定生成日志 2. 使用2.1 客户端redis使用命令2.2 redis存储的数据类型1. String字符串类型2. Hash键值类型3. List列表类型4. Set与Zset集合类型…

JVM-双亲委派机制

双亲委派机制定义 双亲委派机制指的是:当一个类加载器接收到加载类的任务时,会自底向上查找是否加载过, 再由顶向下进行加载。 详细流程 每个类加载器都有一个父类加载器。父类加载器的关系如下,启动类加载器没有父类加载器&am…

基于springboot + Thymeleaf + vue开发的 个人博客,含前后端

作者:ChenZhen 本人不常看网站消息,有问题通过下面的方式联系: 邮箱:1583296383qq.comvx: ChenZhen_7 我的个人博客地址:https://www.chenzhen.space/🌐 版权:本文为博主的原创文章&#xff…

【深度学习】实验7布置,图像超分辨

清华大学驭风计划 因为篇幅原因实验答案分开上传, 实验答案链接http://t.csdnimg.cn/P1yJF 如果需要更详细的实验报告或者代码可以私聊博主 有任何疑问或者问题,也欢迎私信博主,大家可以相互讨论交流哟~~ 深度学习训练营 案例 7 &#xff1…

Python爬虫——请求库安装

目录 1.打开Anaconda Prompt 创建环境2.安装resuests3.验证是否安装成功4.安装Selenium5.安装ChromeDriver5.1获取chrom的版本5.1.1点击浏览器右上三个点5.1.2点击设置5.1.3下拉菜单,点击最后关于Chrome,获得其版本 5.2 打开网址 [chromedriver](https:/…

vue3:25—其他API

目录 1、shallowRef和shallowReactive 2、readonly与shallowReadonly readonly shallowReadonly 3、toRaw和markRaw toRaw markRaw 4、customRef 1、shallowRef和shallowReactive shallowRef 1.作用:创建一个响应式数据,但只对顶层属性进行响应式处理。2…

2024-02-07(Sqoop,Flume)

1.Sqoop的增量导入 实际工作中,数据的导入很多时候只需要导入增量的数据,并不需要将表中的数据每次都全部导入到hive或者hdfs中,因为这样会造成数据重复问题。 增量导入就是仅导入新添加到表中的行的技术。 sqoop支持两种模式的增量导入&a…

基于javaEE的ssm仓库管理系统

仓库管理系统的重中之重是进销存分析这一板块,在这一板块中,顾名思义能够查询到近期的进货记录,包括每日的进货单据,单品推移(即某一商品的库存变化),方便我们核对库存差异。同时也需要查询到每日的销售数据&#xff0…