编者按:该文件是一个文件交换器周中精选
你是否希望MATLAB有一个放大镜,这样你就可以看到小区域的细节,而不必一次又一次地放大和缩小?只运行的放大。m',并将感兴趣的图形作为当前图形,然后使用鼠标左键弹出一个您控制的放大veiw。或者在点击的同时使用“Ctrl”键,打开一个放大镜,当释放图形时,放大镜会“锁定”到图形上(用于复制和打印图形时)。使用'<'和'>'键使放大镜更小或更大。使用“-”和“+”来减少或增加放大率。
里克几何(2020)。放大(//www.tatmou.com/matlabcentral/fileexchange/5961-magnify), MATLAB中央文件交换。检索。
1.0.0.0 | BSD许可 |
太棒了!
非常感谢
谢谢这个功能,你能告诉我怎么退出这个功能吗?
增加了一个简单的修改,允许独立的x/y放大。调整a2的设置用户数据在第31行有三个字段(2 2 0.2),调整64行调用a2_param(3)不(2)位置设置,设置67行调用a2_param(2)(1),然后添加两个额外的elseifs复制75 - 78行修改a2_param(2)与您选择的按钮(我去[和])。比单变焦更有用。
很好的工具。它是非常有用的。谢谢你!
非常感谢。确实有用。
非常有帮助,非常感谢!
你好,当我把这个函数放到库的MATLAB2018版本中,我得到一个错误:计算Figure WindowButtonMotionFcn。但它适用于较低版本的软件。
这是非常有用的!
伟大的功能。但是,我想在不关闭图形的情况下停止执行函数,但是没有找到一个干净的方法来这样做。
我有另一个问题,试图删除/删除放大框,通过右键单击或按住Ctrl,但可以通过替换第34-37行:
集(a2,“标签”,“MagBox”,“用户数据”,[2,0.2],“颜色”,得到(a1,“颜色”),“盒子”,“上”);放大倍数,帧大小
然后在第92行之后添加以下代码:
(eventdata.Key,'backspace')
删除(findobj (src.Children、“类型”、“轴”,“标签”,“MagBox”))
这将在添加的轴上添加一个标签,使其更容易识别,然后删除所有放大轴时,“删除”或“退格”被按下。
伟大的工作!谢谢你!
如何移动锁定的放大镜?
太好了!谢谢!
谢谢
太好了!谢谢~
谢谢
美妙的,谢谢!
谢谢你!
伟大的
非常感谢!
这确实帮了我大忙。
谢谢你! !
它帮了我很多,如果你不介意的话,我在我的代码中做了一点小小的改变。
谢谢你!
谢谢你!
很好的~
非常经验
伟大的工作!它帮了我很多,我在代码中做了一点小小的改动。
f1 =图;
情节(1:10 0,randn(1100),(施用)/ 3,兰特(1300)),网格,
放大(f1)
%您必须在运行下一个代码之前完成图中的放大。假设我们只放大一次。
d = (f1,‘孩子’);
d(1)。将放大后的图形移动到指定位置
轴= d (2);
矩形(“位置”,[d (1) .XLim(1)、d (1) .YLim(1)、d (1) .XLim (2) - (1) .XLim(1)、d (1) .YLim (2) - (1) .YLim(1)),“线宽”,2、“线型”,‘-’,‘EdgeColor’,‘r’%马克原始图的放大部分
应该将“fullcrosshair”替换为“crosshair”,因为在R2015和以后(可能在R2014)中不支持前一种。金宝app
这是非常有用的!干得好!matlab现在更强大了
当图形样式被截断时,它似乎不起作用——有什么想法吗?
要重现这种行为,请尝试以下不工作的方法:
集(0,“DefaultFigureWindowStyle”,“停靠”);
人物,情节(1:10 0,randn(1100),施用)/ 3,兰特(1300))
网格;放大
但如果你回到设置(0,'DefaultFigureWindowStyle','normal')这样就很好了。
非常感谢!
由于男人!这是非常聪明的!
太棒了! !
这对我的论文非常有用,谢谢。伟大的工作!
完美! ! ! !
不错的工作。
如何在不关闭的情况下将其与当前图形分离?
谢谢!
优秀的代码。我如何扩展这个到一个图像内的uipanel上的图形?
太好了!谢谢!
优秀的
好^ _ ^
在我的例子中,y轴是对数缩放的,似乎只是一个小小的修改,如下所示
取代
集(a2, YLim, a1_cp (2) + (1 / a2_param (1)) * (a2_pos (4) / a1_pos (4)) * diff (get (a1, YLim)) *(-0.5 - 0.5))(在函数“ButtonMotionCallback”)
通过
集(a2, YLim, 10。^ (log10 (a1_cp (2) + (1 / a2_param (1)) * (a2_pos (4) / a1_pos (4)) * log10 (Ylima1 (2) / Ylima1 (1)) * (-0.5 - 0.5)))
我做了以下更改,以正常工作:
在==>放大>ButtonDownCallback在39
设置((a2,‘孩子’),…
——“线宽”,2);
+ line_obj = findobj(a2, 'Type', 'line');
+如果~ isempty (line_obj)
+ set(line_obj, 'LineWidth', 2);
+结束
很好的功能!但是有一个小问题。对功能中的图像进行操作出现错误:
> > imshow (im, []);
> >放大;
? ?使用==>设置时出错
在“image”类中没有“LineWidth”属性。
错误在==>放大>ButtonDownCallback在39
设置(获取(a2,‘孩子’),…
这样一个错误函数在鼠标移动后继续正常工作。
我认为有必要检查坐标轴上的物体是否为图像并消除直线属性的变化。
优秀的工作。我想它需要另一个修订来处理在新版本的Matlab中暴露出来的一些bug。
我使用imshow()函数,它给我一个错误:
在“image”类中没有“LineWidth”属性。
错误在==>放大>ButtonDownCallback在39
设置(获取(a2,‘孩子’),…
当然,我可以通过删除这行代码轻松解决这个问题。而且,Ctrl键似乎离开了图像上的方框。另一件需要改变的事情是将第二个轴的XTick和YTick设置为[]:
set(a2, 'XTick', [], 'YTick', []);
再次,良好的工作!
这是一个很棒的应用程序,但是当我用它查看plotyy图表时,它会删除一组数据。有什么值得考虑的吗?
-qooroo
我也喜欢它,但当x轴是基于对数的时,它似乎不太好用。这就是我所使用的全部(频率通常是这样绘制的)。我看了代码,但不确定它会花多长时间,我使mod…
优秀的,美妙的函数
整洁的! !谢谢!
这真是太棒了。
我不确定我是否做错了,ctrl+点击使方框停留在图上,如果我想要在相同的轴上绘制另一个图形,我如何删除它。
这看起来非常有用,有人在MATLAB R2007a的后续版本中看到过它的问题吗?缩放区域不在图的上方,所以无法看到…
极好的,等等。
在GUI中处理鼠标按钮运动和使用'UserData'的优秀说明。除了学习之外,它还为我自己的GUI开发节省了时间。
谢谢。
j·法伦
很好,真的很有帮助
非常好!
优秀的
非常有用的代码。伟大的工作!
如果有人能告诉我,我是否可以用这个代码放大其他程序(例如powerpoint的细节)?
谢谢
我通过设置“标准化”单元解决了这个问题。在一个gui中使用多个轴可以很好地工作。问题:
如何删除一个剩余的窗口,如果你
偶尔按一下鼠标右键?
这是一个很好的工具!谢谢!
对于那些需要它的工作与图像,只需注释出线宽度:
%设置((a2,‘孩子’),…
%“线宽”,2);
这样问题就解决了。
我现在试图弄明白的是,如何使它在具有多个轴的gui中工作。似乎出于某种原因把放大的图像放在了gui的边缘。什么好主意吗?
非常好的应用程序,谢谢!我稍微修改了一下控件。现在,方向键分别控制每个轴的放大,而方括号控制两者,+/-键控制窗口大小。
伟大的工作!MATLAB应该添加它作为一个标准图标在他们的图形面板…
一个小注释:如果您可以在第一句“if (nargin == 0), f1 = gcf;”之后添加一句话“figure(f1);”结束;,它应该更方便。这样,用户选择的图形或当前图形就会自动弹出并“放大”。
谢谢分享!
我同意次郎的建议,以及小组的共识,这是一个非常好的功能!
非常好!一个评论:
如果你可以在你设置线宽之前做一个检查,以防有些对象没有这个属性(例如图像,照明等)。我可以用这个来放大图像文件。
很好!
在1到5的范围内,我把这个设为6。
哇!太好了!
非常酷的
辉煌!
你做了我真正需要的谢谢你!
非常非常好!
确实很棒的功能!恭喜你!
优秀的! !