MATLAB图中图绘制(局部放大图)

article/2025/11/10 5:15:45

MATLAB图中图绘制(局部放大图)

方法1 使用magnify工具

magnify工具可以实现对绘制的figure手动选择区域,并且可以选择多个放大区域。

  1. 下载magnify.m,可以点击上面的链接下载或者可以拷贝附件的代码,保存为magnify.m。然后放到工作目录下(也就是和绘图的程序同一目录。)
  2. 绘制一张图figure.
  3. 保证前两个工作完成,输入magnify,接着就可以选择放大区域了,右键选中想要放大的区域,可以使用‘<’和‘>’缩放方法范围,‘+’和‘-’缩放放大比例,松开右键确认。
  4. 可以通过工具->编辑图形调整子图位置等。
    在这里插入图片描述

方法2 手动绘制1

  此方法需要通过手动设置绘制的数据,具体的说就是需要哪一段就提取某一段的数,通过matlab自带的axes绘制子图。

clc;clear;close all;                                                                                                               
t=linspace(0,3,100);
t1=linspace(1,1.2,100);
y=sin(t);
y1=sin(t1);
figure;                                   % 大图
plot(t,y);
axis('equal');      
axes('Position',[0.2,0.5,0.3,0.3]);   % 小图 设置小图的大小和位置(左上角位置+宽高)
plot(t1,y1); 
xlim([min(t1),max(t1)]); 

在这里插入图片描述

方法3 手动绘制2

  此方法需要通过手动设置绘制的数据,与第二种不同的是,该方法直接绘制所有数据,但是只显示需要放大的区域。

clc;clear;close all;                                                                                                               
t=linspace(0,3,100);
y=sin(t);
figure;                                   % 大图
plot(t,y);
axis('equal');      
axes('Position',[0.2,0.5,0.3,0.3]);   % 小图 设置小图的大小和位置(左上角位置+宽高)
plot(t,y); 
xlim([1,1.2]);

在这里插入图片描述

附件 magnify.m(来源于matlab官网)

function magnify(f1)
%
%magnify(f1)
%
%  Figure creates a magnification box when under the mouse
%  position when a button is pressed.  Press '+'/'-' while
%  button pressed to increase/decrease magnification. Press
%  '>'/'<' while button pressed to increase/decrease box size.
%  Hold 'Ctrl' while clicking to leave magnification on figure.
%
%  Example:
%     plot(1:100,randn(1,100),(1:300)/3,rand(1,300)), grid on,
%     magnify;% Rick Hindman - 7/29/04if (nargin == 0), f1 = gcf; end;
set(f1, ...'WindowButtonDownFcn',  @ButtonDownCallback, ...'WindowButtonUpFcn', @ButtonUpCallback, ...'WindowButtonMotionFcn', @ButtonMotionCallback, ...'KeyPressFcn', @KeyPressCallback);
return;function ButtonDownCallback(src,eventdata)f1 = src;a1 = get(f1,'CurrentAxes');a2 = copyobj(a1,f1);set(f1, ...'UserData',[f1,a1,a2], ...'Pointer','fullcrosshair', ...'CurrentAxes',a2);set(a2, ...'UserData',[2,0.2], ...  %magnification, frame size'Color',get(a1,'Color'), ...'Box','on');xlabel(''); ylabel(''); zlabel(''); title('');set(get(a2,'Children'), ...'LineWidth', 2);set(a1, ...'Color',get(a1,'Color')*0.95);set(f1, ...'CurrentAxes',a1);ButtonMotionCallback(src);
return;function ButtonUpCallback(src,eventdata)H = get(src,'UserData');f1 = H(1); a1 = H(2); a2 = H(3);set(a1, ...'Color',get(a2,'Color'));set(f1, ...'UserData',[], ...'Pointer','arrow', ...'CurrentAxes',a1);if ~strcmp(get(f1,'SelectionType'),'alt'),delete(a2);end;
return;function ButtonMotionCallback(src,eventdata)H = get(src,'UserData');if ~isempty(H)f1 = H(1); a1 = H(2); a2 = H(3);a2_param = get(a2,'UserData');f_pos = get(f1,'Position');a1_pos = get(a1,'Position');[f_cp, a1_cp] = pointer2d(f1,a1);set(a2,'Position',[(f_cp./f_pos(3:4)) 0 0]+a2_param(2)*a1_pos(3)*[-1 -1 2 2]);a2_pos = get(a2,'Position');set(a2,'XLim',a1_cp(1)+(1/a2_param(1))*(a2_pos(3)/a1_pos(3))*diff(get(a1,'XLim'))*[-0.5 0.5]);set(a2,'YLim',a1_cp(2)+(1/a2_param(1))*(a2_pos(4)/a1_pos(4))*diff(get(a1,'YLim'))*[-0.5 0.5]);end;
return;function KeyPressCallback(src,eventdata)H = get(gcf,'UserData');if ~isempty(H)f1 = H(1); a1 = H(2); a2 = H(3);a2_param = get(a2,'UserData');if (strcmp(get(f1,'CurrentCharacter'),'+') | strcmp(get(f1,'CurrentCharacter'),'='))a2_param(1) = a2_param(1)*1.2;elseif (strcmp(get(f1,'CurrentCharacter'),'-') | strcmp(get(f1,'CurrentCharacter'),'_'))a2_param(1) = a2_param(1)/1.2;elseif (strcmp(get(f1,'CurrentCharacter'),'<') | strcmp(get(f1,'CurrentCharacter'),','))a2_param(2) = a2_param(2)/1.2;elseif (strcmp(get(f1,'CurrentCharacter'),'>') | strcmp(get(f1,'CurrentCharacter'),'.'))a2_param(2) = a2_param(2)*1.2;end;set(a2,'UserData',a2_param);ButtonMotionCallback(src);end;
return;% Included for completeness (usually in own file)
function [fig_pointer_pos, axes_pointer_val] = pointer2d(fig_hndl,axes_hndl)
%
%pointer2d(fig_hndl,axes_hndl)
%
%	Returns the coordinates of the pointer (in pixels)
%	in the desired figure (fig_hndl) and the coordinates
%       in the desired axis (axes coordinates)
%
% Example:
%  figure(1),
%  hold on,
%  for i = 1:1000,
%     [figp,axp]=pointer2d;
%     plot(axp(1),axp(2),'.','EraseMode','none');
%     drawnow;
%  end;
%  hold off% Rick Hindman - 4/18/01if (nargin == 0), fig_hndl = gcf; axes_hndl = gca; end;
if (nargin == 1), axes_hndl = get(fig_hndl,'CurrentAxes'); end;set(fig_hndl,'Units','pixels');pointer_pos = get(0,'PointerLocation');	%pixels {0,0} lower left
fig_pos = get(fig_hndl,'Position');	%pixels {l,b,w,h}fig_pointer_pos = pointer_pos - fig_pos([1,2]);
set(fig_hndl,'CurrentPoint',fig_pointer_pos);if (isempty(axes_hndl)),axes_pointer_val = [];
elseif (nargout == 2),axes_pointer_line = get(axes_hndl,'CurrentPoint');axes_pointer_val = sum(axes_pointer_line)/2;
end;

http://chatgpt.dhexx.cn/article/4X2snFD8.shtml

相关文章

怎么运用好ZBrush中Magnify膨胀笔刷

Magnify膨胀笔刷是ZBrush笔刷中经常使用的&#xff0c;利用该笔刷可绘制中心向四周膨胀的效果。本文内容向大家介绍ZBrush中膨胀笔刷以便大家熟悉它的用法和特性。 查看更多内容请直接前往&#xff1a;http://www.zbrushcn.com/jichu/zbrush-4r7-Magnify-bishua.html Magnify膨…

ZBrush中Magnify膨胀笔刷介绍

Magnify膨胀笔刷是ZBrush笔刷中经常使用的&#xff0c;利用该笔刷可绘制中心向四周膨胀的效果。本文内容向大家介绍ZBrush中膨胀笔刷以便大家熟悉它的用法和特性。 Magnify膨胀笔刷 Magnify&#xff08;膨胀、放大&#xff09;&#xff1a;Magnify笔刷从光标下移动顶点&#xf…

Jquery Magnify Plugin 放大鏡效果 One

Jquery Magnify Plugin 放大鏡效果 One Jquery1.3.2Lib下載地址:http://files.cnblogs.com/davidzhou/jquery-1.3.2.rar插件 下載地址&#xff1a; http://files.cnblogs.com/davidzhou/jquery.magnify-1.0.2.rar Demo 下載地址&#xff1a; http://files.cnblogs.com/davidzh…

jQuery插件Magnify放大镜实现javascript图片放大功能

jQuery插件Magnify放大镜实现javascript图片放大功能 博客所有文章均属原创作品&#xff0c;如有转载&#xff0c;请注明作者&#xff1a;biuuu&#xff0c;来源&#xff1a; http://www.biuuu.com/?p459 有时候制作图片放大功能时需要实现图片的放大镜效果&#xff0c;当鼠标…

Magnify glass for EditText

http://stackoverflow.com/questions/6800237/magnify-glass-for-edittext-like-in-iphone-is-it-possible-to-draw-outside-of-a-vi

【源码】具有“放大镜”功能的函数magnify

本函数可以通过鼠标控制来弹出放大镜查看2D图片的细节。 Turns the mouse into a pop-up magnifying glass to look at details of 2D plots. 你是否曾经希望MATLAB拥有一个放大镜功能&#xff0c;这样就可以不用一次又一次地放大或缩小就能看到小块区域的细节&#xff1f; …

jQuery 图片查看插件 Magnify 开发简介(仿 Windows 照片查看器)

前言 因为一些特殊的业务需求&#xff0c;经过一个多月的蛰伏及思考&#xff0c;我开发了这款 jQuery 图片查看器插件 Magnify&#xff0c;它实现了 Windows 照片查看器的所有功能&#xff0c;比如模态窗的拖拽、调整大小、最大化&#xff0c;图片的缩放、平移、旋转&#xff…

给图片查看器插件Magnify新增放大镜功能

说实话Magnify图片查看器插件已经非常强大了,媲美Windows的图片查看器,但是,毕竟是开源插件,用起来简单,就是兼容性等各种bug问题。不过还好能用&#xff0c;自己优化一下就好。 在实际项目中&#xff0c;如果只是在页面简单的实现这个图片预览、放大、翻看等功能&#xff0c;…

matlab利用magnify作图

首先&#xff0c;在命令窗口输入magnify&#xff1b; 然后&#xff0c;按住ctrl鼠标左键&#xff0c;选中要看的区域&#xff1b;想要放大局部图片时&#xff0c;我们可以放开ctrl,去点击键&#xff0c;进行放大&#xff1b; 最后&#xff0c;可以放开鼠标左键&#xff0c;点击…

Matlab制作局部放大图——magnify源码

Matlab制作局部放大图——magnify源码 写论文时会遇到需要用matlab做局部放大图的问题&#xff0c;好在matlab给出了magnify局部放大函数。下面是我做的一个小例子。 步骤&#xff1a; 1、先将magnify.m函数复制到包含图片的文件夹下。 2、plot出你要做局部放大图的图片&am…

VBA入门到进阶常用知识代码总结77

第77集 API基础 367、 API概述 API&#xff08;Application Programming Interface,应用程序编程接口&#xff09;是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力&#xff0c;而又无需访问源码&#xff0c;或理解内部工作机制的细节…

认识VBA------------------VBA基础

一、前言 在最近的工作中&#xff0c;有幸了解到VBA相关的知识&#xff0c;它主要是被应用于我们平时所使用的word和Excel中&#xff0c;主要用VBA代码来进行数据处理&#xff0c;在办公领域使用的比较广泛。通过一段时间的学习&#xff0c;总结了一些自己的理解和所学&#xf…

vba set语句_零基础学VBA编程06:什么是变量?

每天一篇原创Excel图文 微信公众号&#xff1a;Excel星球 NO.81-什么是变量&#xff1f; 作者&#xff1a;看见星光 微博&#xff1a;EXCELers / 知识星球&#xff1a;Excel 哈罗&#xff0c;大家好&#xff0c;我是星光&#xff0c;今天给大家聊一下编程中一个非常重要的概念—…

Excel VBA使用总结

Excel VBA 1.入门1.1开启VBA之旅 2.语法2.1清除单元格内容2.2vba设密码2.3以前的代码2.4使用正则2.5使用stack 都说世界上最好的语言就是PPT,工作报告&#xff0c;年度总结。。。。 到处都有它的身影&#xff0c;更是被高手设计的惟妙惟肖。 今天&#xff0c;我们不争第一&…

VBA录制宏知识整理

XIWENJIE_VBA基础简介之录制宏 A.录制宏的使用 一、什么是宏 VBA是 [Visual Basic](https://baike.baidu.com/item/Visual Basic)的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。主要能用来扩展Windows的应用程序功能,特别是[Microsoft Office](…

excel VBA编程入门,自定义excel数据库模板生成sql语句

文章目录 VBA基础一.了解VBA1.进入vba2.认识宏 二. VBA编程1.hello world2.调出立即窗口和本地窗口3.debug显示4.注释5.数据类型5.变量的生命周期和定义域6.判断语句7.不等于<> , switch case 条件判断8.循环do while退出循环的语句 exit for退出循环的语句 exit do 9.数…

Excel Vba编程初探一

【场景】对EXCEL表格批量添加公式 【分析】 1、如何给单元格写值/公式 2、公式如何带变量 【Excel设置】 【实现】 0&#xff09;代码书写的地方 1&#xff09;代码 Sheet1被激活时触发 Private Sub Worksheet_Activate() Call SetFormula Call TestSetA1ToA10 End Sub函…

二 详解VBA编程是什么

详解VBA编程是什么 直到 90 年代早期,使应用程序自动化还是充满挑战性的领域.对每个需要自动化的应用程序,人们不得不学习一种不同的自动化语言.例如:可以用EXCEL的宏语言来使EXCEL自动化,使用WORD BASIC使WORD自动化,等等.微软决定让它开发出来的应用程序共享一种通用的自动化…

CSS入门(二)

CSS入门&#xff08;一&#xff09; https://blog.csdn.net/Veer_c/article/details/103882856 CSS文本属性和值&#xff1a; <style type"text/css"> div{/*设置字符间距*/letter-spacing:4px;/*设置文本的位置*/text-align:center;/*给文本设置上划/下划/中…

【前端学习】CSS入门

前端学习&#xff1a;CSS入门 文章目录 前端学习&#xff1a;CSS入门前言1、class011.我的第一个CSS2.导入方式3.基本选择器(1)ID选择器(2)标签选择器(3)类选择器 4.层次选择器5.结构伪类选择器6.属性选择器 2、class021.span/div2.字体样式3.文本样式4.超链接伪类5.列表 3、cl…