2015-09-12 32 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命令時,而不是是可能的)。