MATLAB使用技巧之局部放大图的制作(二)

news/2025/2/11 16:00:52/

文章目录

    • 前言
    • 局部放大图的具体制作
    • 小结

前言

前文MATLAB使用技巧之局部放大图的制作及文本箭头的便捷设置介绍了如何在MATLAB中绘制局部放大图,并且如何便捷地设置文本箭头的相关内容,但相关的局部放大图仍然需要我们在制作每一幅图时进行手动操作,而且为了方便后续的修改需要保存MATLAB的.fig文件。

在操作上仍然属于非常麻烦的,比较适合制作单张图或者一次性制作的图。本文则采用m代码形式进行局部放大图的制作,较之前手动的办法有一定的效率提升。

局部放大图的具体制作

  1. 准备绘图数据(根据自己的需求得到要画图的x轴和y轴数据)。这里我采用的是之前仿真的一组数据,横轴为时间t,纵轴为误差e
  2. 按照正常绘图操作进行绘图
    1. 比如使用plot等函数进行绘图和进行相应的标注,这一点与大家之前进行常用的绘图没有任何区别。示例代码如下
    2. 注意设置纵轴坐标,留出绘制局部放大图的位置。
    3. 如下图所示。
figure 
box on
hold on
r1_error = plot(t,e_rho_1,'--g','LineWidth',2);
r2_error = plot(t,e_rho_2,'-.m','LineWidth',2);
r3_error = plot(t,e_rho_3,'--b','LineWidth',2);
r4_error = plot(t,e_rho_4,'-.c','LineWidth',2);
r5_error = plot(t,e_rho_5,'--k','LineWidth',2);
hold off
e_rho = legend([r1_error,r2_error,r3_error,r4_error,r5_error],'$e_{\rho_{1}}$', ...'$e_{\rho_{2}}$','$e_{\rho_{3}}$','$e_{\rho_{4}}$','$e_{\rho_{5}}$');
set(e_rho, 'interpreter', 'latex', 'FontSize', 18, ...'Orientation', 'horizon')
ylim([-1,5])
xlabel('Time(s)', 'FontSize', 14);

  1. 编写局部放大代码,绘制局部放大图
    1. 绘制局部放大图的原理:在当前的图上再建一个坐标系,并重复与正常图一样的绘图操作,最后设置x轴和y轴的范围以突出局部放大即可。
    2. 具体代码如下(包含详细注释)
    3. 值得注意的是,若局部放大的图的位置与你的预期不符,可以调整ax2 = axes('Position',[0.294474772539289 0.374964234620887 0.45 0.45]); 代码中的四个数值来调整位置。<font style="color:rgb(6, 6, 7);">'Position'</font> 属性的值是一个四元素向量,格式为 <font style="color:rgb(6, 6, 7);">[left bottom width height]</font>,这些值都是归一化的,范围在 <font style="color:rgb(6, 6, 7);">[0, 1]</font> 之间,相对于当前图形窗口(figure)的大小。例如代码中的四个数值含义分别为
      • 0.294474772539289:坐标轴左下角距离图形窗口左侧的距离,占图形窗口宽度的 29.45%。
      • 0.374964234620887:坐标轴左下角距离图形窗口底部的距离,占图形窗口高度的 37.50%。
      • 0.45:坐标轴的宽度,占图形窗口宽度的 45%。
      • 0.45:坐标轴的高度,占图形窗口高度的 45%。
    4. 经过实践后,还是观察效果后,手动调整比较方便。
    5. 经过上述操作后,可以得到如下的示例图片
%局部放大开始
%[]中的是坐标系的放置位置,即应该放置在我们之前留好的空白区域内。具体数值选择可以通过自行调整选择。
ax2 = axes('Position',[0.294474772539289 0.374964234620887 0.45 0.45]);  
hold on
box on
% 重复绘图操作,跟之前绘制正常图一样即可
r1_error2 = plot(t,e_rho_1,'--g','LineWidth',2);
r2_error2 = plot(t,e_rho_2,'-.m','LineWidth',2);
r3_error2 = plot(t,e_rho_3,'--b','LineWidth',2);
r4_error2 = plot(t,e_rho_4,'-.c','LineWidth',2);
r5_error2 = plot(t,e_rho_5,'--k','LineWidth',2);
% 设置xy轴显示范围,以突出局部放大作用。
xlim(ax2, [0,8]);
ylim(ax2, [-0.5,4]);
%局部放大end

  1. 局部放大图制作出来,还可以为其增加矩形框和相对应的箭头以增加指示性。具体操作可以参见第一篇文章MATLAB使用技巧之局部放大图的制作及文本箭头的便捷设置关于文本箭头的设置,增加矩形框也是类似的。于是我们可以得到如下图所示的局部放大图示例。

小结

本文在第一篇文章制作局部放大图的基础上,抛弃了纯手工作图的方法而采用编写m代码进行局部放大图的制作,结合矩形框和箭头等绘图要素,可以绘制出局部放大图,并且较以前的方法提高了效率并且可重复使用,也不需要保存.fig文件。

如果本文对您有帮助,还麻烦您点一个免费的赞!如果 有错误也欢迎向我反馈。


http://www.ppmy.cn/news/1570783.html

相关文章

【JVM详解四】执行引擎

一、概述 Java程序运行时&#xff0c;JVM会加载.class字节码文件&#xff0c;但是字节码并不能直接运行在操作系统之上&#xff0c;而JVM中的执行引擎就是负责将字节码转化为对应平台的机器码让CPU运行的组件。 执行引擎是JVM核心的组成部分之一。可以把JVM架构分成三部分&am…

基于RK3588/RK3576+FPGA的巡检机器人六自由度机械臂的系统设计

当今巡检机器人机械臂在管廊隧道等复杂环境的作业过程中&#xff0c;经常面临空间狭窄 且障碍物密集的问题&#xff0c;这就要求机械臂具备在狭窄空间进行避障路径规划的能力。此 外&#xff0c;一些不确定性因素如在突发或异常环境条件下&#xff0c;机械臂的全局状态信息感知…

【TOGAF系列】架构内容第四章:架构交付成果

本章提供了ADM中引用的可交付成果的描述。 4.1 介绍 本章定义了在TOGAF ADM周期中通常会消耗和产生的可交付成果。由于可交付成果通常是架构项目的合同或正式工作产品&#xff0c;因此这些可交付成果很可能会受到企业任何总体项目或过程管理&#xff08;如CMMI、PRINCE2、PMB…

C++ Primer 逗号运算符

欢迎阅读我的 【CPrimer】专栏 专栏简介&#xff1a;本专栏主要面向C初学者&#xff0c;解释C的一些基本概念和基础语言特性&#xff0c;涉及C标准库的用法&#xff0c;面向对象特性&#xff0c;泛型特性高级用法。通过使用标准库中定义的抽象设施&#xff0c;使你更加适应高级…

【AI绘画】MidJourney关键词{Prompt}全面整理

AI绘画整理&#xff0c;MidJourney关键词。喜欢AI绘画的朋友必备&#xff0c;建议收藏&#xff0c;后面用到时供查阅使用。 1、光线与影子篇 中 英 闪耀的霓虹灯 shimmeringneon lights 黑暗中的影子 shadows in the dark 照亮城市的月光 moonlightilluminatingthe cit…

C# Winform怎么设计串口,客户端和相机控件界面显示

首先我们必须把这个类创建好 INIAPI using System; using System.Text; using System.Runtime.InteropServices;namespace Ini {public class IniAPI{#region INI文件操作/** 针对INI文件的API操作方法&#xff0c;其中的节点&#xff08;Section)、键&#xff08;KEY&#x…

以Unity6.0为例,如何在Unity中开启DLSS功能

DLSS DLSS&#xff08;NVIDIA 深度学习超级采样&#xff09;&#xff1a;NVIDIA DLSS 是一套由 GeForce RTX™ Tensor Core 提供支持的神经渲染技术&#xff0c;可提高帧率&#xff0c;同时提供可与原生分辨率相媲美的清晰、高质量图像。目前最新突破DLSS 4 带来了新的多帧…

什么是三层交换技术?与二层有什么区别?

什么是三层交换技术&#xff1f;让你的网络飞起来&#xff01; 一. 什么是三层交换技术&#xff1f;二. 工作原理三. 优点四. 应用场景五. 总结 前言 点个免费的赞和关注&#xff0c;有错误的地方请指出&#xff0c;看个人主页有惊喜。 作者&#xff1a;神的孩子都在歌唱 大家好…