如何在MatLab中以编程方式调用zoom事件?

如何在MatLab中以编程方式调用zoom事件?,matlab,callback,Matlab,Callback,我正在使用“plot_google_map.m”,它使用google Maps API在当前图形的背景中绘制地图。使用该API生成的图形在缩放事件时自动刷新地图,我还添加了一些代码,使其在平移事件时刷新数据 现在,我想在不使用缩放或平移按钮的情况下通过编程更改轴的范围,但问题是贴图不会自动刷新。所以,我正在考虑通过编程方式生成缩放或平移事件,但我还没有找到一种方法。 有什么想法吗 让我详细说明我的问题。 在“plot_google_map.m”中,有一个子函数,它是缩放事件的回调 functio

我正在使用“plot_google_map.m”,它使用google Maps API在当前图形的背景中绘制地图。使用该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\u google\u map”之外调用此子函数。

欢迎提出任何意见,并提前感谢您的回答

假设轴句柄是
hAxes
,则可以通过更改轴的
xLim
yLim
属性而不是缩放比率来进行缩放,如下所示:

如果绘图使用的是0-100之间的x轴,则可以放大特定子范围og 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])

So,根据绘图或图像的大小更改轴的
xLim
yLim
值,这就是轴的实际缩放工作方式

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

 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]);
 %// =============================

您听说过
zoom
命令吗

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

实际上,程序似乎就是这样识别你缩放的。

为什么不在每次更改轴范围后再次调用plot\u google\u map?
这将导致使用新范围更新地图。

帮助轴是否包含缩放所需的信息?谢谢您,但我还没有找到解决此问题的方法。所以我添加了一些示例代码来解释我的问题。请也看看这个。所以如果你使用
get(hz,'ActionPostCallback')获得原始图形句柄
-难道你不能执行它吗?太好了!这正是我所寻找的解决方案。现在我知道了如何获取缩放回调的句柄,并使用检索到的句柄执行它。谢谢你,谢谢你,山姆。我试过你的建议,但设置“X点”只会改变轴的标签。@SeungwooNoh。。很抱歉,它不是
xTick
yTick
,而是
xLim
yLim
@SeungwooNoh,我已经修复了代码并添加了一个轴上缩放的演示。再次感谢Sameh。您的注释和示例代码非常有助于解决我的问题。