在MATLAB的figure图中画局部放大的图中图
在MATALB绘图中,有时会遇到这样的情况,需要通过放大figure图的局部,针对细节加以说明。例如:在给定的尺度下有两条或多条曲线难以区别,此时就需要对其进行局部放大来加以区分。参考网上的解决方法1总结了以下方法2
1、利用magnify函数
2、利用axes函数
方法一
源自MathWorks社区,利用magnify.m文件,可以登录MathWorks帐号后下载magnify函数(没有帐号可以直接注册一个)。
1.下载解压后将magnify.m文件放入需要操作的figure图的工作目录下
2.打开(或选中)figure图,在MATLAB命令窗口输入magnify
3.在figure图中,将鼠标停在想要放大的区域处,点击鼠标右键不要松开手,此时鼠标点击处出现类似放大镜的方框(可以一直按住右键并移动鼠标改变区域位置),并通过“<”和“>”键缩小或扩大方框范围,通过“-”和“+”键减小或增加局部缩放比例,直到得到自己想要的小图后即可松开鼠标右键。若想得到多个小图,重复上述操作即可。(这一过程通常叫做固化)
4.通过figure菜单栏中的tools->edit plot选项或选中工具栏中的白色箭头来调节小图位置,也可单独在小图中编辑图形的坐标轴、线形、颜色等。
方法一所见即所得,可以放大一个或多个区域。
方法二
MATLAB文档中axes函数的解释为Create axes graphics object,即创建坐标轴图形对象。其中有一个功能Position Multiple Axes in Figure Window可以Create multiple axes in a single figure window and specify their positions,也就是可以在一幅图形窗口内创建多个坐标轴并指定它们的位置。
axes('Position',[subNormalxLabel,subNormalyLabel,normalWidth,normalHeight])
其中,subNormalxLabel为子图左下角位置的归一化横坐标,subNormalxLabel为子图左下角位置的归一化纵坐标,计算公式为:
subNormalxLabel = (该位置的横坐标-横坐标起始值)/横坐标量程
subNormalyLabel = (该位置的纵坐标-纵坐标起始值)/纵坐标量程
normalWidth为子图的归一化宽度,normalHeight为子图的归一化高度,计算方式类似。
MATLAB给出的一个示例代码:
axes('Position',[0.1,0.1,0.7,0.7])
contour(peaks(20))axes('Position',[0.65,0.7,0.28,0.28])
surf(peaks(20))
效果图
实际中遇到的问题如下图:在给定的尺度下,两条曲线几乎重合(红色曲线几乎被蓝色曲线覆盖),需要对局部放大以示区分,两条曲线的数据(x1,y1)、(x2,y2)已知,x1、y1、x2、y2均为数组。
1.在MATLAB下,选中上图的figure图,利用axes语句(例如axes('Position',[0.4 0.3 0.3 0.25]);
),得到如下的图中图
2.利用已知数据将大图中的曲线画入子图中,并利用figure中的放大镜等工具在大图中确定需要放大的范围及效果(例如放大区域为[xmin, xmax, ymin, ymax]),而后将子图的坐标轴范围改为[xmin, xmax, ymin, ymax]即可,随后可对子图进行编辑,效果如下
如果想得到多个子图可重复上述操作。
方法二可以精确到具体的放大范围,也可以放大多个区域。
http://cn.mathworks.com/matlabcentral/fileexchange/5961-magnify
http://blog.csdn.net/wangh0802/article/details/70237118
http://5460521xp.blog.163.com/blog/static/6908756920122210253741 ↩︎搜索过程中还存在第三种方法,即利用Mastering MATLAB 7示例中函数的方法,主要利用其提供的三个函数
getn():将get()函数的输出参数简化为单个变量
getbox():实现矩形区域的选择,并捕捉该区域的横纵标的范围
mmzoom:创建一个缩放坐标轴
但由于原下载链接http://www.eece.maine.edu/mm/失效,暂未找到原函数文件,待日后找到再续。 ↩︎
在MATLAB的figure图中画局部放大的图中图相关推荐
- 思维导图怎么画?原来思维导图还可以这样绘制
思维导图怎么画?很多办公人员.学生或多或少的听说过思维导图,但是大多数人对思维导图并不是很了解,今天小编分享一下它是怎样绘制的,又是怎样帮助我们学习的.有兴趣的小伙伴可以跟着小编了解一下. 一. ...
- java怎么画八卦图_自己画八卦图怎么画?电脑绘制八卦图|八卦图的简单画法
今天又是美妙的周五了,其实小编周一早上起床睁开眼的时候,就很期待的想着,如果今天是周五就好了.结果没想到,时间一下子就过去了,今天真的是周五了.啊哈哈,很绕是吧,还是不说废话了,来看看今天的教程方案吧 ...
- python能画k线图吗_k线图怎么画?_Python绘制K线图
本文介绍关于Python绘制K线图与股票中怎样才能画出有效的趋势线.压力和支撑位?与手工绘制股票K线图有什么技巧,要先从哪学起?与外汇怎样绘制蜡烛图?与k线图怎么变宽了,怎么复原?与怎样判断K线点位高 ...
- 机械动作时序图怎么画_时序图怎么画步骤教程_时序图用什么工具画_时序图的作用是什么...
时序图(Sequence Diagram),亦称为序列图.循序图或顺序图,是一种UML交互图.它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作. 时序图是一个二维图,横轴表示对象,纵轴表 ...
- 机械动作时序图怎么画_快速学习时序图:时序图简介、画法及实例
原标题:快速学习时序图:时序图简介.画法及实例 时序图作为常用的UML交互图,可以直观的传达系统内外之间的交互过程,经常用在详细设计文档中.下面本文综合参考了多篇时序图的教程,根据作者的思路将时序图做 ...
- LDAP图怎么画?常见的LDAP图的绘制方法
LDAP是轻型目录访问协议的英文缩写,主要是一套抽象.开放的通讯标准,能够轻松实现静态数据的快速查找,是一种便捷.高效的查询方式. LDAP图常见用途 LDAP图广泛应用于计算机领域,在系统.网络.应 ...
- python——plt.figure()画子图(双轴图)双Y轴实例
话对比图,如果两个数量级的纵坐标,我们要进行趋势比较,放在同一坐标轴,某一个往往被压缩的的很小.所以需要左右双Y轴画图. 1.随便获取数列,对应的索引化成一样就可以了,下面是量化的数据处理,可以不用看 ...
- 函数调用关系图如何画_乌鲁木齐126中一校三址关系图出炉!佳源和绿谷应该如何选择?...
前几天有位自称老王的找到我,说想购买乌鲁木齐126中的学区房,资金有限还不想要二手房,想在126本部和126高铁校区选一个新楼盘,目前老王去看了本部的绿谷学府和高铁校区的佳源都市,你们觉得那个更值得购 ...
- 【思维导图怎么画】万彩脑图大师教程 | 嵌入企业Logo到思维导图
在使用万彩脑图大师进行思维导图设计的过程中, 你可以把企业logo嵌入到思维导图中让你的品牌的得到更好地宣传.具体操作如下: 一.选择以下其中一种方式打开"选项"窗口 1)点击菜单 ...
最新文章
- ITIL应用系列之服务台
- markdown引入代码_人人都会的Markdown
- 【Linux】一步一步学Linux——ctrlaltdel命令(198)
- [Unity] 战斗系统学习 10:ActorAttribute
- 六一儿童节,看我用ModelArts让8090梦回童年
- uva 10098 Generating Fast(全排列)
- keystone环境搭建(源码方式+yum方式)(ocata版本)
- ArcView GIS 应用与开发技术(11)-空间分析
- Linux日志管理实验
- 100个Python实战项目(十一)如何使用 Python 获取电话号码信息?
- 用excel将有规律的数据随机打乱
- 从零开始iOS8编程【HelloWorld】
- python cls和self_python中cls与self与类调用
- 解构瑞幸小鹿茶:两大战场、一套逻辑、一个梦想
- 淘宝商品详情API接口(网页版,APP端二合一接口)
- oracle安装界面空白,在windows 2012中安装oracle 12c R2界面空白挂起无响应CPU达到100%的问题...
- 批处理序列风格与管道过滤器风格对比
- css的论文,css
- Win7共享打印机 出现 “ 无法保存打印机设置 操作无法完成(错误 0x000006d9)“
- cpufreq动态频率调节(Sofia3GR)浅析及应用层APK实现