如何在MatLab中以编程方式触发缩放事件?

5
我正在使用“plot_google_map.m”来使用Google Maps API在当前图形的背景中绘制地图。使用此方法生成的图形会在缩放事件时自动刷新地图,并且我添加了一些代码,使其在平移事件时也能刷新数据。
现在,我想以编程方式更改轴的范围,而不使用缩放或平移按钮,但问题是地图不会自动刷新。因此,我考虑以编程方式生成缩放或平移事件,但我还没有找到方法。
有什么好的建议吗?
让我详细说明我的问题。 在“plot_google_map.m”中,有一个子函数作为缩放事件的回调函数。
function plot_google_map  
% Listen to Zoom events    
h  = figure(1); plot(1:10);
hz = zoom(h);
set(hz,'ActionPostCallback',@mypostcallback);

function mypostcallback(obj,evd)
disp('Refreshes map data');

我想做的是,在'plot_google_map'之外调用这个子函数。
欢迎任何想法,并感谢您提前回答!


help axis 中是否包含你所需的缩放信息? - Dennis Jaheruddin
3个回答

3

您听说过缩放命令吗?

>> help zoom
 zoom   Zoom in and out on a 2-D plot.

实际上,这似乎是该程序识别您缩放的方式。

谢谢bdecaf,但我还没有找到解决这个问题的方法。因此,我添加了一些示例代码来解释我的问题。请也看一下这个。 - Seungwoo Noh
1
如果你使用get(hz,'ActionPostCallback')获取到原始的图形句柄,那么你不就可以执行它了吗? - bdecaf
太好了!这正是我一直在寻找的解决方案。现在我知道如何获取缩放回调的句柄,并使用检索到的句柄执行它。谢谢bdecaf。 - Seungwoo Noh

0
假设您的轴句柄为hAxes,那么您可以通过更改轴的xLimyLim属性来进行缩放,而不是使用缩放比例,如下所示:

如果您的绘图使用0-100的x轴,则可以缩放到特定的子范围0-100,例如:

set(hAxes,'xLim',[20 40])

同时对于y轴,您可以缩放特定的y范围:

set(hAxes,'xLim',[30 70])

如果你想在图表上放大特定区域,例如x[20-50],y[10-50],你可以通过执行前两个操作来实现:

set(hAxes,'xLim',[20 50])
set(hAxes,'yLim',[10 50])


所以,根据您的绘图或图像的大小,更改轴的xLimyLim值,这就是实际缩放轴的方式。

您甚至可以尝试此演示脚本:

 clear;clc;
 figure;
 h = axes;
 y = sin( 0:2*pi / 100:pi );
 plot(y);
 %// =============================
 pause(1);
 set(h , 'xlim' , [20 80]);
 %// =============================
 pause(1);
 set(h , 'xlim' , [30 40]);
 %// =============================
 pause(1);
 set(h , 'xlim' , [10 100]);
 %// =============================
 pause(1);
 set(h , 'ylim' , [.1 .4]);
 %// =============================
 pause(1);
 set(h , 'ylim' , [.2 .7]);
 %// =============================
 pause(1);
 set(h , 'ylim' , [.3 .9]);
 %// =============================
 pause(1);
 set(h , 'ylim' , [.1 .2]);
 set(h , 'xlim' , [10 80]);
 %// =============================
 pause(1);
 set(h , 'ylim' , [.3 .7]);
 set(h , 'xlim' , [40 90]);
 %// =============================

谢谢Sameh。我已经尝试了您的建议,但是设置“xTick”只会改变轴的标签。 - Seungwoo Noh
@SeungwooNoh .. 很抱歉,不是 xTickyTick,而是 xLimyLim - Sameh K. Mohamed
@SeungwooNoh,我已经修复了代码并添加了一个关于轴缩放的演示。 - Sameh K. Mohamed
再次感谢你,Sameh。你的评论和示例代码对于解决我的问题非常有帮助。 - Seungwoo Noh

0
为什么不在每次更改轴范围后再次调用plot_google_map呢?这将导致地图使用新的范围进行更新。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接