Matlab进阶绘图第28期—带回归趋势线的密度散点图

news2025/1/15 16:41:38

在之前的文章中,分享了Matlab密度散点图的绘制方法

进一步,假如我们需要计算、添加散点的拟合线,该怎么操作呢?

本期就来分享一下带回归趋势线的密度散点图的绘制方法,先来看一下成品效果:

特别提示:本期内容『数据+代码』已上传资源群中,加群的朋友请自行下载。有需要的朋友可以关注同名公号【阿昆的科研日常】,后台回复关键词【绘图桶】查看加入方式


1. 数据准备

此部分主要是读取原始数据并初始化绘图参数,然后计算生成回归线参数(本文采用多项式回归)

% 读取数据load data.mat% 初始化绘图参数data = [x,y];% 密度计算radius = 1.5; % 定义半径density_2D = density2D_KD(data(:,1:2),radius); % 2D平面密度% 回归趋势线生成xq = min(data(:,1)):0.1:max(data(:,1));p = polyfit(data(:,1),data(:,2),1);x1 = linspace(min(data(:,1)),max(data(:,1)),100);y1 = polyval(p,x1);

2. 颜色定义

作图不配色就好比做菜不放盐,总让人感觉少些味道。

但颜色搭配比较考验个人审美,需要多加尝试。

这里直接使用TheColor配色工具中的SCI权威配色库

%% 颜色定义map = TheColor('sci',2064);map = flipud(map);

3. 带回归趋势线的密度散点图绘制

调用‘scatter’与‘plot’命令,绘制初始带回归趋势线的密度散点图

scatter(data(:,1), data(:,2), 5, density_2D, 'filled')p1 = plot(x1,y1,'LineStyle',':','LineWidth',2,'Color','k');hTitle = title('Satellite-derived bathymetry');hXLabel = xlabel('ICESat-2 bathymetric points in depth (m)');hYLabel = ylabel('Estimated depth (m)');

4. 细节优化

为了插图的美观,将初始密度散点图赋上之前选择的颜色

% 赋色colormap(map)colorbar

进一步,对坐标轴细节等进行美化:

% 坐标轴美化set(gca, 'Box', 'off', ...                                        % 边框         'LineWidth',1,...                                        % 线宽         'XGrid', 'on', 'YGrid', 'on', ...                        % 网格         'TickDir', 'out', 'TickLength', [.005 .005], ...         % 刻度         'XMinorTick', 'off', 'YMinorTick', 'off', ...            % 小刻度         'XColor', [.1 .1 .1],  'YColor', [.1 .1 .1],...          % 坐标轴颜色         'XTick', 0:40:160,...                                    % 坐标区刻度、范围         'XLim', [0 160],...         'YTick', 0:40:160,...         'YLim', [0 160])hLegend = legend(p1, ...                 'Regression line',...                 'Location', 'northwest'); set(gca, 'FontName', 'Arial', 'FontSize', 10)set([hLegend, hXLabel, hYLabel], 'FontSize', 11, 'FontName', 'Arial')set(hTitle, 'FontSize', 12, 'FontWeight' , 'bold')% 背景颜色set(gcf,'Color',[1 1 1])% 添加上、右框线xc = get(gca,'XColor');yc = get(gca,'YColor');unit = get(gca,'units');ax = axes( 'Units', unit,...           'Position',get(gca,'Position'),...           'XAxisLocation','top',...           'YAxisLocation','right',...           'Color','none',...           'XColor',xc,...           'YColor',yc);set(ax, 'linewidth',1,...        'XTick', [],...        'YTick', []);

设置完毕后,以期刊所需分辨率、格式输出图片。

%% 图片输出figW = figureWidth;figH = figureHeight;set(figureHandle,'PaperUnits',figureUnits);set(figureHandle,'PaperPosition',[0 0 figW figH]);fileout = 'test';print(figureHandle,[fileout,'.png'],'-r300','-dpng');

也可以尝试其它配色:

以上。

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

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

相关文章

iOS开发Swift-10-位置授权, cocoapods,API,天气获取,城市获取-和风天气App首页代码

1.获取用户当前所在的位置 在infi中点击加号,选择权限:当用户使用app的时候获取位置权限. 填写使用位置权限的目的. 2.获取用户的经纬度. ViewController: import UIKit import CoreLocationclass ViewController: UIViewController, CLLocationManagerDelegate { //遵循CLL…

C#进阶 多个泛型约束

using System; using System.Collections; using System.Collections.Generic; using System.Linq; using UnityEngine;public class A02_Generic : MonoBehaviour {[ContextMenu("测试Start")]// Start is called before the first frame updatevoid Start(){Person…

Java SPI的原理和实践

Java SPI的概念和术语 SPI:全称是Service Provider Interface它是从Java 6开始引入的,是一种基于ClassLoader来发现并加载服务的机制。一个标准的SPI,由3个组件构成,分别是: Service - 服务接口:是一个公…

简单理解微服务限流、降级、熔断

微服务限流、降级、熔断分别都是什么意思,我们平时工作中为什么要关注这些东西呢? 公司不断的发展壮大,一开始处于蛮荒时代,咱们从单体应用过渡到微服务的时候,可能还是那一套单体的思想,再加上用户量可能…

VIT理论代码详解

将图像输入到transformer的思想 把每个像素点按照顺序拿出来,作为token,这样做的话输入参数规模是:假如是1通道的灰度图: 224x224x150176,bert才512,是bert的100倍。 改进方法: VIT模型架构图…

前端代理报错Error occured while trying to proxy to: localhost:端口

webpack配置进行前端代理时, 报错信息如下:(DEPTH_ZERO_SELF_SIGNED_CERT) 需设置:secure为false即可解决此报错 // webpack配置前端代理config["/test"]{target: https://xxxx.com,changeOrigin: true,secure: false // 这个配置…

设计模式(1) - UML类图

1、前言 最近在阅读 Android 源码,时常碰到代码中有一些巧妙的写法,简单的如 MediaPlayerService 中的 IFactory,我知道它是工厂模式,但是却不十分清楚它为什么这么用;复杂点的像 NuPlayer 中的 DeferredActions 机制…

云原生Kubernetes:kubectl管理命令

目录 一、理论 1.kubectl 管理命令 2.项目的生命周期 二、实验 1.kubectl 管理命令 2.项目的生命周期 三、总结 一、理论 1.kubectl 管理命令 (1)陈述式资源管理方法 kubernetes集群管理集群资源的唯一入口是通过相应的方法调用apiserver的接口…

进入低功耗和唤醒

休眠模式 进入休眠模式 如果使用 WFI 指令进入睡眠模式,则嵌套向量中断控制器 (NVIC) 确认的任意外设中断都会 将器件从睡眠模式唤醒。 如果使用 WFE 指令进入睡眠模式,MCU 将在有事件发生时立即退出睡眠模式。唤醒事件可 通过以下方式产生&#xff…

转载: 又拍云【PrismCDN 】低延时的P2P HLS直播技术实践

低延时的P2P HLS直播技术实践本文是第二部分《PrismCDN 网络的架构解析,以及低延迟、低成本的奥秘》低延时的P2P HLS直播技术实践 [首页 > Open Talk NO.41 | 2018 音视频技术沙龙深圳站 > 低延时 WebP2P 直播技术实践https://opentalk-blog.b0.upaiyun.com/prod/2018-0…

maven管理android项目

maven管理android项目 1.安装maven-android-sdk-deployer,下载地址:https://github.com/mosabua/maven-android-sdk-deployer 2.解压缩大英文路径文件夹 3.在压缩后的根目录执行mvn clean install -P 2.3.3(2.3.3指的是android版本号&#x…

传输层协议--UDP

引入 传输层负责数据能够从发送端传输到接收端。 端口号(Port) 端口号标识了一个主机上进行通信的一个进程。 两个问题: 1. 一个进程可以绑定多个端口号吗?--可以 2.一个端口号可以绑定多个进程吗?--不可以 我们…

OpenCV(二十二):均值滤波、方框滤波和高斯滤波

目录 1.均值滤波 2.方框滤波 3.高斯滤波 1.均值滤波 OpenCV中的均值滤波(Mean Filter)是一种简单的滤波技术,用于平滑图像并减少噪声。它的原理非常简单:对于每个像素,将其与其周围邻域内像素的平均值作为新的像素值…

Python实现猎人猎物优化算法(HPO)优化BP神经网络回归模型(BP神经网络回归算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 猎人猎物优化搜索算法(Hunter–prey optimizer, HPO)是由Naruei& Keynia于2022年提出的一种最新的…

2023年全国职业院校技能大赛 高等职业教育组(信息安全管理与评估)正式赛题

全国职业院校技能大赛 高等职业教育组 qq:2366046367 q群:670610200信息安全管理与评估 任务书 模块一 网络平台搭建与设备安全防护 一、 比赛时间 本阶段比赛时长为180分钟。 二、 赛项信息 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 第一阶段 网络平台搭建与设备安全防护 …

【软考】系统集成项目管理工程师(三)信息系统集成专业技术知识②

十二、面向对象 1、什么是对象:客观存在的事物都是对象 2、什么是类:类是确定对象将会拥有的特性和行为,它不是具体客观存在的东西 3、面向对象和面向过程的区别? (1)面向对象是将实物高度抽象化 &…

关闭vscode检查更新

要关闭 Visual Studio Code 的自动检查更新功能,请按照以下步骤进行操作: 打开 Visual Studio Code。点击左侧的扩展图标(四个方块组成的图标)。在扩展面板中,点击右上角的齿轮图标,选择 “扩展设置”。在…

网络技术一:计算机网络概述

计算机网络概述 计算机网络定义 一组自治计算机互联的集合 计算机网络基本功能 资源共享 综合信息服务 分布式处理与负载均衡 计算机网络的类型 局域网 LAN:由用户自行建设,使用私有地址组建的内部网络 城域网 MAN:由运营商或大规模…

Linux vim

知识回顾 文件 内容 属性目录权限:1. 如果你想进入一个目录是需要x权限的 2.r 的作用是限制你查看该目录下的文件属性和内容 3. W 的作用是限制你能否在这个目录中创建和删除文件 Vim 首先,使用 touch test.c 指令创建一个文件 输入 : vi…

python关闭指定进程以excel为例

先说下环境: Excel版本: Python2.7.13和Python3.10.4并存。 2、打开两个excel工作簿 看进程是这样的: 3、用python编程kill进程 # -*- coding: utf-8 -*- import os proc_nameEXCEL.EXE if __name__ __main__:os.system(taskkill /im {} /…