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