2015-09-12 30 views
0

更改数字限制我有包含轴的导向GUI上,我初始设定适当的限制:而不改变变焦

set(axes,'YLim',[ymin ymax]); 

在一个点编程方式与

axes.YLimMode = 'auto'; 
设置的轴来调节极限动态

另一方面,我想以编程方式将坐标轴设置为具有固定限制

axes.YLimMode = 'manual'; 
set(axes,'YLim',[ymin ymax]); 

问题:在这一点上,我想通过适当的缩放(用户可以通过缩小工具缩小)来保持轴的当前可见部分。这如何实现?

+0

请问您能否通过适当的缩放_来保持轴的当前可见部分? –

+0

在更改'YLim'时的最后一步,图形的可见部分显然会改变。我想通过应用适当的缩放来补偿这一点,因此图的可见部分保持相同,但是应该改变图的极限(例如,当用户完全缩小时可见的)。 –

+0

我不明白你的观点,因为轴限制*定义*缩放。你能展示一个你想达到的例子吗? – Ratbert

回答

0

原来它是在端相当简单:

axes.XLimMode = 'manual'; 
axes.YLimMode = 'manual'; 

% save current "zoomed in" limits (not needed if you want to set other values later) 
xcur = axes.XLim; 
ycur = axes.YLim; 

% set axes limits to desired "zoomed out" state 
set(axes,'XLim',[xmin xmax]); 
set(axes,'YLim',[ymin ymax]); 
zoom(figure,'reset'); % sets and remembers current state as "zoomed out state" 

% restore (or set freely) "zoomed in" limits 
set(axes,'XLim',xcur); 
set(axes,'YLim',ycur); 

重要的部分是zoom(figure,'reset');,其在内部设置的电流限制为最大缩小状态。然后可以(编程)通过设置XLim/YLim的任意值来放大。然而,用户仍然能够手动缩小,直到达到之前设置的最大缩小状态(当删除zoom命令时,而不是是可能的)。