Matlab绘制多个曲线的图及局部放大细节展示

news2024/10/7 0:52:12

绘制多个曲线的图及局部放大细节展示

在科学研究中,经常需要绘制多个曲线并展示局部放大的细节(如下图)。
Matlab绘制多个曲线的图及局部放大细节展示

本篇博客介绍了如何使用MATLAB绘制多个曲线,并在同一张图中添加局部放大图,以展示具体细节。

示例数据

首先,我们准备了一些示例数据,这些数据包括自变量 x 和三个因变量 y1、y2、y3,分别表示 sin(x)、cos(x) 和 exp(-x/5) * cos(2x)。

x = linspace(0, 10, 100);
y1 = sin(x);
y2 = cos(x);
y3 = exp(-x/5) .* cos(2*x);

绘制多个曲线的图

我们将使用MATLAB的 plot 函数来绘制多个曲线,并为每个曲线选择不同的颜色、线型和标记。

colors = lines(3); % 颜色方案
line_styles = {'-', '-', '-'}; % 曲线线型
marker_styles = {'none', 'none', 'none'}; % 曲线标记

figure;
for i = 1:3
    plot(x, eval(['y', num2str(i)]), 'Color', colors(i,:), 'LineStyle', line_styles{i}, 'Marker', marker_styles{i}, 'LineWidth', 1.5);
    hold on;
end

legend('sin(x)', 'cos(x)', 'exp(-x/5)*cos(2*x)', 'Location', 'best');
title('包含多个曲线的图');
xlim([0, 10]);
ylim([-1.2, 3]);
xlabel('X轴');
ylabel('Y轴');

以上代码会创建一个新的图形窗口,并绘制了三个曲线,分别对应 sin(x)、cos(x) 和 exp(-x/5) * cos(2x)。我们选择了明亮的颜色方案,并为曲线选择了适当的线型和标记。同时,我们设置了图例和坐标轴的标签、标题以及范围。

展示局部放大图的细节

除了绘制多个曲线的整体图,我们还希望能够展示其中一个区域的细节。为此,我们将创建一个新的坐标系,并在该坐标系中绘制局部放大图。

ax = axes('Position',[0.2 0.6 0.25 0.25]);
box on;
hold on;

for i = 1:3
    plot(x, eval(['y', num2str(i)]), 'Color', colors(i,:), 'LineStyle', line_styles{i}, 'Marker', marker_styles{i},LineWidth=1.5);
end

xlim([zoom_x_start, zoom_x_end]);
ylim([zoom_y_start, zoom_y_end]);
xlabel('X轴');
ylabel('Y轴');
title('局部放大图

 - 细节显示');

grid on;
linkaxes([gca, ax], 'xy');

在上述代码中,我们使用 axes 函数创建了一个新的坐标系,并设置了它的位置和大小。然后,我们在新的坐标系中绘制了与整体图相同的三个曲线。通过设置坐标轴的范围,我们将局部放大的区域展示出来。同时,我们添加了网格线以增强可读性,并使用 linkaxes 函数将两个坐标系的缩放和平移功能链接起来。

至此,我们成功绘制了多个曲线的图,并在同一张图中展示了局部放大的细节。这种绘图方式可以帮助我们更好地理解数据的特征和细节,对于科研工作和论文写作非常有用。

完整代码如下

% 示例数据
x = linspace(0, 10, 100);
y1 = sin(x);
y2 = cos(x);
y3 = exp(-x/5) .* cos(2*x);

% 创建新图形窗口
figure;

% 绘制曲线
colors = lines(3); % 颜色方案
line_styles = {'-', '-', '-'}; % 曲线线型
marker_styles = {'none', 'none', 'none'}; % 曲线标记

for i = 1:3
    plot(x, eval(['y', num2str(i)]), 'Color', colors(i,:), 'LineStyle', line_styles{i}, 'Marker', marker_styles{i},LineWidth=1.5);
    hold on;
end

% 图例
legend('sin(x)', 'cos(x)', 'exp(-x/5)*cos(2*x)', 'Location', 'best');
title('包含多个曲线的图');

% 设置坐标轴范围和标签
xlim([0, 10]);
ylim([-1.2, 3]);
xlabel('X轴');
ylabel('Y轴');

% 创建新的坐标系
ax = axes('Position',[0.2 0.6 0.25 0.25]); % 设置新坐标系的位置和大小
box on; % 绘制坐标系边框
hold on; % 在新坐标系上绘制多个曲线

% 绘制局部放大图
for i = 1:3
    plot(x, eval(['y', num2str(i)]), 'Color', colors(i,:), 'LineStyle', line_styles{i}, 'Marker', marker_styles{i},LineWidth=1.5);
end

% 设置局部放大图坐标轴范围和标签
xlim([zoom_x_start, zoom_x_end]);
ylim([zoom_y_start, zoom_y_end]);
xlabel('X轴');
ylabel('Y轴');
title('局部放大图 - 细节显示');

% 添加网格线
grid on;

% 链接缩放和平移
linkaxes([gca, ax], 'xy');

希望本篇博客能够对您在MATLAB中绘制多个曲线和局部放大图有所帮助。感谢阅读!如有任何问题或建议,请在评论区留言。

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

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

相关文章

六、2.云尚办公-权限管理

云尚办公系统:前端权限对接(了解) B站直达【为尚硅谷点赞】: https://www.bilibili.com/video/BV1Ya411S7aT 本博文以课程相关为主发布,并且融入了自己的一些看法以及对学习过程中遇见的问题给出相关的解决方法。一起学习一起进步…

pcl经典算法60例——(1)打开并显示点云

一、搭建MFC框架 1、环境说明 本教程为vs2022,pcl1.12.1版本,其他版本自己进行适当修改,仅供参考。 2、方法步骤 (1)新建项目,选择“基于对话框”,然后点击“下一步” 二、配置pcl环境 关于配置环境,网…

Linux--man指令

语法: man [选项] 命令 功能: 查询命令的详细信息,包括man命令本身 选项: -k 根据关键字搜索联机帮助num 只在第num章节找-a 将所有章节的都显示出来,比如 man printf 它缺省从第一章开始搜索,知道就停止…

spring security登录接口鉴权原理

使用了gatewayspring security,项目当初打算使用gateway统一鉴权的,整合步骤点击此处 当时没有深入security,今天偶然看代码发现验证密码的时候加密了,但是登录表单提交的密码没有加密。看下代码吧 登录接口验证账号密码是否正确 postman登录…

Vue如何生成二维码 qrcode.js2

QRCode.js是一个二维码生成javascript库;支持跨浏览器的HTML5 Canvas和表格标签的DOM操作;并且不依赖其它的库或拓展。 官网地址:https://davidshimjs.github.io/qrcodejs/ 安装方式:(qrcode.js有两个版本我用的是第…

软件测试练手项目,可以写进简历里面的项目实战

最近收到许多自学自动化测试的小伙伴私信,学习了理论知识后,却没有合适的练手项目。 测试本身是一个技术岗位,如果只知道理论,没有实战经验,在面试中很难说服面试官,比如什么场景下需要添加显示等待&#x…

LIN诊断实现MCU本地OTA升级

一、目标 通过PC端上位机实现MCU本地的OTA升级,本篇文章对实现的目的、需要用到的第三方工具、LIN诊断帧、升级协议、MCU端升级过程以及PC端升级过程做详细说明。 二、目的 最近在做MCU项目时需要将样机寄给客户进行验证,在客户的验证过程中要求参数可调试,如果需要修改软…

【AUTOSAR】BMS开发实际项目讲解(二十二)----电池管理系统高压绝缘保护

高压绝缘保护 关联的系统需求 TSR-BMS-5101、TSR-BMS-5102、TSR-BMS-5103、TSR-BMS-5104、TSR-BMS-5105、TSR-BMS-5106、TSR-BMS-5107、TSR-BMS-5108、TSR-BMS-5109、TSR-BMS-5110、TSR-BMS-5111、TSR-BMS-5112、TSR-BMS-5113、TSR-BMS-5114、TSR-BMS-5115、TSR-BMS-5116; TSR…

图像平滑处理:cv::filter2D()函数详解

cv::filter2D 函数可以对图像进行线性滤波。 函数可以对图像进行线性滤波。该函数使用指定的卷积核对输入图像进行卷积,以计算输出图像中每个像素的值。 该函数的原型如下: void cv::filter2D(InputArray src, OutputArray dst, int ddepth, InputArr…

JAVA IO流 File 字节流 字符流(tedu)

JAVA IO流 File 字节流 字符流(tedu) 目录 JAVA IO流 File 字节流 字符流(tedu)IO简介1 流Stream2 IO流的继承结构3 File文件类3.1概述3.2创建对象3.3 常用方法 4 字节流读取4.1 InputStream抽象类4.2 FileInputStream子类4.3 BufferedInputStream子类4.4 练习:字节…

Radio Transmission

[BOI2009] Radio Transmission 无线传输 题目描述 给你一个字符串 s 1 s_1 s1​,它是由某个字符串 s 2 s_2 s2​ 不断自我连接形成的(保证至少重复 2 2 2 次)。但是字符串 s 2 s_2 s2​ 是不确定的,现在只想知道它的最短长度…

亚马逊云科技如何通过四大自研芯片助力企业创新,摆脱基础架构束缚

2023年6月27-28日,2023亚马逊云科技中国峰会在上海顺利举行。在此次峰会上我们可以清晰地看到为什么亚马逊云科技可以做到领先地位,为什么亚马逊云科技可以一直保持进步。这都与亚马逊云科技“基于客户需求,快速进行产品更新与技术迭代”的Da…

ethtool 原理介绍和解决网卡丢包排查思路

前言 之前记录过处理因为 LVS 网卡流量负载过高导致软中断发生丢包的问题,RPS 和 RFS 网卡多队列性能调优实践[1],对一般人来说压力不大的情况下其实碰见的概率并不高。这次想分享的话题是比较常见服务器网卡丢包现象排查思路,如果你是想了解…

使用Prometheus+Grafana实现监控

使用PrometheusGrafana实现监控 我们用 actuator 暴露应用本身的线程、bean 等信息,但是这些信息还是独立于 Prometheus 之外的。下面我们 将介绍如何将 SpringBoot Actuator 与 Prometheus 结合起来。 我们同样从 Spring Initializr 创建一个名为 spring-web-pr…

从零开始 Spring Boot 54:@NotNull in Entity

从零开始 Spring Boot 54:NotNull in Entity 图源:简书 (jianshu.com) 之前通过两篇文章介绍了 Hibernate Validation 在 Spring 中的应用: 从零开始 Spring Boot 13:参数校验 - 红茶的个人站点 (icexmoon.cn)从零开始 Spring B…

[RocketMQ] Broker asyncSendMessage处理消息以及自动创建Topic (十)

asyncSendMessage方法用来处理来自producer发送的消息。 文章目录 1.asyncSendMessage异步处理单条消息2.preSend准备响应命令对象2.1 msgCheck检查并自动创建topic2.1.1 createTopicInSendMessageMethod创建普通topic2.1.2 createTopicInSendMessageBackMethod创建重试topc2.1…

浅入浅出Java锁

前提 做分布式爬虫时,结合已有的架构,直接对某网站的详情页进行了爬取;尴尬的是,某网站需先采集列表页,之后才能采集详情页;这种防爬手段使用了用户行为监控,行为异常的访问直接就给屏蔽了。 对…

c++11 日期和时间工具-(std::chrono)

链接 std::chrono是C11引入的日期时间处理库&#xff0c;其中包含3种时钟&#xff1a; system_clock&#xff0c;steady_clock&#xff0c;high_resolution_clock。 定义于头文件 <chrono> std::chrono 库 system_clock steady_clock 链接 链接2 每一次调用time_…

解决go install github.com/mattn/goreman@latest安装报错

go install github.com/mattn/goremanlatest报错&#xff1a; [rootlocalhost ~]# go install github.com/mattn/goremanlatest go: github.com/mattn/goremanlatest: module github.com/mattn/goreman: Get "https://proxy.golang.org/github.com/mattn/goreman/v/list&…