Matlab 使用subplot绘制多个子图,一元拟合

实现效果:

clc; clear;

filename = 'sri.xlsx'; % 确认文件路径

data = readtable(filename);
datavalue = data{:,2:end};
datavalue = datavalue';

fig = figure('Position', [0, 0, 1500, 900]);
indexString = ["(a)","(b)","(c)","(d)","(e)","(f)","(g)",];
subplotName = ["h1","h2","h3","h4","h5","h6","h7"];
for i = 1:7
    subplot(4,2,i);
    years = datavalue(:,1); 
    values = datavalue(:,i+1);
    
    coefficients = polyfit(years, values, 1);
    k = coefficients(1);
    b = coefficients(2);
    
    % 计算Y轴上下限值,将其设置为最大值和最小值的 1.1 倍
    y_max = max(values) * 1.3;
    y_min = min(values) * 1.3;

    plot(years, values, 'o-', 'MarkerSize', 4, 'MarkerFaceColor', '#58CCFA', 'Color', '#58CCFA', 'LineWidth', 1.5);
    hold on;
    plot(years, k*years + b, 'r--',  'LineWidth', 1);%拟合线
    xlim([1960 2018]);
    xtick_values = 1960:10:2010;  
    if ~ismember(2018, xtick_values)
        xtick_values = [xtick_values, 2018];  
    end
    xticks(xtick_values);
    ylabel('SRI', 'FontSize', 12);
    ylim([y_min y_max]); % 设置Y轴上下限值
    grid on;
    yrange = ylim; % 获取当前子图的y轴值域范围
    text(1961, 0.9 * yrange(2),indexString(i), 'FontSize', 14, 'HorizontalAlignment', 'left', 'VerticalAlignment', 'top'); % 调整文本位置坐标

    ax = gca; 
    ax.FontSize = 12; 
    annotation('textbox', [ax.Position(1), ax.Position(2), ax.Position(3), ax.Position(4)], 'String', sprintf('k = %.4f, b = %.2f', k, b), 'FontSize', 14, 'EdgeColor', 'none', 'Color', 'black', 'HorizontalAlignment', 'center'); % 调整注释框位置

    hold off;
end

% 在第 8 个子图位置添加文本
subplot(4,2,8);
str = ["(a):华北湿润半湿润暖     (b):西北荒漠地区";...
       "(c):华中华南湿润亚热     (d):东北湿润半湿润温";...
       "(e):内蒙草原地区            (f):青藏高原";...
       "(g):华南湿润热带地区"];

text(0.15, 0.4, sprintf('%s\n', str{:}), 'FontSize', 14, 'HorizontalAlignment', 'left', 'VerticalAlignment', 'middle');
axis off; % 关闭坐标系显示


print(fig, 'data.tif', '-dtiff', '-r2000'); % 保存为 TIFF 文件,300 DPI 分辨率

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

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

相关文章

LinkedList和链表

1.ArrayList的缺陷 ArraryList由于底层是一段连续的空间,所以在ArrayList任意位置插入或者删除元素时,就 需要将后续元素往前或者往后搬移,时间复杂度为O(n),效率比较低,因此ArrayList不适合做任意位置插入和删除比较…

Json三方库介绍

目录 Json是干什么的Json序列化代码Json反序列化代码 Json是干什么的 Json是一种轻量级的数据交换格式,也叫做数据序列化方式。Json完全独立于编程语言的文本格式来存储和表述数据。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升…

Linux--进程间的通信-共享内存

前文: Linux–进程间的通信-匿名管道 Linux–进程间的通信–进程池 Linux–进程间的通信-命名管道 共享内存 对于两个进程,通过在内存开辟一块空间(操作系统开辟的),进程的虚拟地址通过页表映射到对应的共享内存空间中…

# 从浅入深 学习 SpringCloud 微服务架构(三)注册中心 Eureka(3)

从浅入深 学习 SpringCloud 微服务架构(三)注册中心 Eureka(3) 段子手168 1、eureka:高可用的引入 Eureka Server 可以通过运行多个实例并相互注册的方式实现高可用部署, Eureka Server 实例会彼此增量地…

文件批量高效重命名,支持重命名后不满意恢复原名,高效管理文件

我们每天都会与大量的文件打交道,无论是工作文件、学习资料,还是生活照片、视频,都需要我们进行高效的文件管理。然而,传统的文件重命名方式往往效率低下,无法满足我们的需求。今天,我们为您带来了一款批量…

MATLAB设置变量

您可以通过简单的方式分配变量。例如, 示例 x 3 %定义x并用值初始化它 MATLAB将执行上述语句并返回以下结果- x 3 它创建一个名为x的1乘1矩阵,并将值3存储在其元素中。再举一个实例, 示例 x sqrt(16) %定义x并用表达式初始化它 MATLAB将…

cv2技术原理-图像旋转原理及手动实现

cv2技术原理-图像旋转原理及手动实现 1、图像旋转opencv实现2、cv2.getRotationMatrix2D函数解释3、数学原理推导旋转矩阵M4、手动计算旋转矩阵M5、旋转矩阵M的使用6、使用旋转矩阵M手动实现旋转功能 1、图像旋转opencv实现 图像旋转在对数据集数据增强(主要是随机…

WordPress自动记录404死链方法+实用代码

WordPress自动记录404死链方法实用代码 WordPress自动将404死链记录到TXT文档中 在网站根目录新建文件: 404.txt,并设置权限为:755 将以下代码粘贴到你的 WordPress 主题中的 404.php $error_url https://.$_SERVER[HTTP_HOST].$_SERVER[…

python爬虫小案例——汽车之家

本篇文章是使用bs4中的BeautifulSoup和requests解析网页和获取数据👑🌟 文章目录 🌟前言一、🍉bs4中的BeautifulSoup二、🍉bs4的语法三、🍉内容实践1. 确定想要爬取的内容2. 分析网页3. 获取数据分析 &…

【微服务】spring读取配置文件多种方式深入详解

目录 一、前言 二、java配置文件介绍 2.1 java配置文件产生原因 2.2 项目使用配置文件好处 2.3 springboot项目配置文件的必要性 2.4 微服务架构下配置文件使用场景 三、java读取配置文件常用方法 3.1 使用Properties类读取配置文件 3.1.1 使用getResourceAsStream读取…

【C语言】操作符相关编程题

目录 题目一: 题目二: 题目三: 题目三: 题目四: 题目五: 题目六: 题目七: 题目八: 题目一: 题目:不创建临时变量,交换两个数…

代码托管基础操作

在待上传代码文件夹中右键,打开Git Bash Here依次输入以下命令: git init(在本地初始化一个代码仓库,具体表现为会在你的文件夹里出现一个隐藏的.git文件夹) git add .(先把代码放到本地的一个缓冲区)添加当前目录下的…

Windows使用freeSSHd搭建sftp服务器

一、安装 1、运行freeSSHd.exe(最好以管理员方式运行) 2、选择安装位置 3、选择全部安装 4、是否创建开始启动栏快捷入口 5、是否创建桌面快捷方式 6、安装 7、安装完成,点击close 8、安装私钥 9、是否要安装为服务 10、全部安装完成 二、配…

查找输入整数的二进制中1的个数

方法1&#xff1a;简单做法&#xff0c;直接用库函数 #include<bitset> #include<iostream> using namespace std; int main(){int n;while(cin>>n){bitset<32> b(n);cout<<b.count()<<endl;} }补充bitset //注意&#xff1a;直接输出 b…

EasyExcel导出图片并实现动态表头、自动合并单元格、给指定单元格设置值

概要描述 最近工作中涉及到使用Excel导出图片的需求,下面对使用Excel导出图片遇到的一些问题进行记录说明。需求通过 EasyExcel中提供的转换器(Converter)和拦截器(Handler)实现。EasyExcel 官网地址 实现效果 实现过程 EasyExcel 支持导出 ByteArray、File、String、In…

软件缺陷和测试用例

软件缺陷 软件缺陷概念 Bug有时也被泛指因软件产品内部的缺陷引起的软件产品最终运行时和预期属性的偏离。 产生原因 1.需求不明确2.软件结构复杂3.编码问题4.项目期限短5.使用新技术 类型 错误、遗漏、额外实现 准则 Correct&#xff08;准确&#xff09;&#xff1a;…

一堆喷儿香喷儿香的工具网站-已经收藏-搜嗖工具箱!

文心一言 https://yiyan.baidu.com/ ​ ChatGpt横空出世的横空出世好像一把钥匙&#xff0c;开启了大模型时代&#xff0c;国内也有不错的产品&#xff0c;比如百度的文心一言&#xff0c;从3.5到4.0看得见的成长&#xff0c;现在的文心一言是我们工作中不可缺少的好帮手&am…

基于单片机的智能病床呼叫系统设计与仿真

摘 要 本文设计的病床呼叫系统采用单片机作为控制器。该系统具有远程控制、病人的身体情况检测、报警呼叫、显示和执行器运动的功能。远程控制由红外线传感器和矩阵键盘组成&#xff0c;检测电路由温湿度传感器DH22、心率传感器Pulse Sensor、压力传感器MPX4115组成&#x…

uniapp 如何区分目前运行环境(app、web、mp-weixin)

platform 区分 iOS、Android uniplatform 区分 app、web、mp-weixin ....

JavaEE 初阶篇-深入了解 File 文件操作(实现文件搜索、非空文件夹删除)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 File 文件概述 2.0 创建 File 类对象的方法 2.1 判断文件类型、获取文件信息的方法 2.2 创建文件、删除文件的方法 2.3 遍历文件夹的方法 3.0 文件搜索与删除 3.1…