zoom

확대/축소 기능을 켜거나 끄고, 배율로 확대

구문

zoom on
zoom off
zoom out
zoom reset
zoom
zoom xon
zoom yon
zoom(factor)
zoom(fig, option)
h = zoom(figure_handle)

설명

zoom on은 확대/축소 모드를 켭니다. 확대/축소 모두가 Figure에서 활성화된 경우, 커서가 좌표축 내에 있을 때 마우스 버튼을 누르면 마우스 아래의 지점이 확대되거나 축소됩니다. 확대/축소는 좌표축 제한을 변경합니다. 확대/축소 모드를 사용하는 경우 다음 작업을 수행할 수 있습니다.

  • 플롯의 중심이 될 곳에 마우스 커서를 두고 다음 방법 중 하나를 사용하여 확대합니다.

    • 마우스 버튼을 누릅니다.

    • 마우스 스크롤 휠을 사용자로부터 먼 쪽으로(위쪽으로) 돌립니다.

  • 플롯의 중심이 될 곳에 마우스 커서를 두고 다음 방법 중 하나를 사용하여 축소합니다.

    • Shift 키와 마우스 버튼을 동시에 누릅니다.

    • 마우스 스크롤 휠을 사용자 쪽으로(아래쪽으로) 돌립니다.

마우스를 클릭하거나 스크롤 휠을 1클릭 돌릴 때마다 2배율로 확대되거나 축소됩니다.

확대 기능이 활성화되었을 때 클릭하여 좌표축 위로 끌면 고무줄 상자가 그려집니다. 마우스 버튼을 놓으면 좌표축이 고무줄 상자로 둘러싸인 영역으로 확대됩니다.

확대 모드와 축소 모드 모두, 좌표축을 두 번 클릭하면 좌표축이 초기 확대/축소 설정으로 되돌아갑니다.

zoom off는 확대/축소 모드를 끕니다. R2018b부터는 일부 확대/축소 상호작용이 확대/축소 모드와 관계없이 기본적으로 활성화됩니다. 이러한 디폴트 상호 작용을 비활성화하려면 disableDefaultInteractivity 함수를 사용하십시오.

zoom out은 플롯을 초기 확대/축소 설정으로 되돌립니다.

zoom reset은 현재의 확대/축소 설정을 초기 확대/축소 설정으로 간주하여 기억합니다. 나중에 zoom out을 호출하거나, 대화식 zoom 모드가 활성화되었을 때 두 번 클릭하면 이 확대/축소 수준으로 되돌아갑니다.

zoom은 확대/축소 모드 끄기와 켜기를 토글 형식으로 전환합니다(최근에 사용된 확대/축소 툴을 복원함).

zoom xonzoom yon은 각각 x축과 y축에 대해 zoom on을 설정합니다.

zoom(factor)는 대화식 확대/축소 모드에 영향을 주지 않고 지정한 확대/축소 배율로 확대하거나 축소합니다. 1보다 큰 값은 그 양만큼 확대되는 반면, 0보다 크고 1보다 작은 숫자는 1/factor로 축소됩니다.

zoom(fig, option) 이 구문을 사용하여 현재 Figure가 아닌 다른 Figure에서 위에 열거된 옵션을 지정할 수 있습니다.

h = zoom(figure_handle)은 모드의 동작을 사용자 지정할 수 있도록 Figure figure_handle에 대한 확대/축소 모드 객체를 반환합니다.

확대/축소 모드 객체 사용

다음 속성에 액세스할 수 있습니다.

  • Enable 'on'|'off' — 이 Figure 모드가 현재 해당 Figure에서 활성화되어 있는지 여부를 지정합니다.

  • FigureHandle <handle> — 관련 figure 핸들입니다. 이 속성은 읽기 전용이며 설정할 수 없습니다.

  • Motion 'horizontal'|'vertical'|'both' — Figure에 대해 활성화된 확대/축소 유형입니다. 이 속성은 2차원 보기([0 90])의 좌표축에만 영향을 줍니다.

  • Direction 'in'|'out' — 확대/축소 작업의 방향입니다.

  • RightClickAction 'InverseZoom'|'PostContextMenu' — 마우스 오른쪽 버튼 클릭 작업의 동작입니다.

    값이 'InverseZoom'이면 마우스 오른쪽 버튼을 클릭할 때 축소됩니다. 값이 'PostContextMenu'이면 상황별 메뉴가 표시됩니다. 이 설정은 다른 MATLAB® 세션으로 전환해도 유지됩니다.

  • UIContextMenu <handle> — 마우스 오른쪽 버튼 클릭 작업 중 표시될 사용자 지정 상황별 메뉴를 지정합니다.

    RightClickAction 속성이 'InverseZoom'으로 설정된 경우에는 이 설정이 무시됩니다.

확대/축소 모드 콜백

확대/축소 모드 작업을 위해 다음 콜백을 프로그래밍할 수 있습니다.

  • ButtonDownFilter <function_handle>ButtonDown 이벤트를 가로채는 함수

    응용 프로그램은 콜백이 반환하는 결과에 따라 프로그래머가 정의하는 조건에서 확대/축소 작업을 금지할 수 있습니다. 다음과 같이, 이 입력 함수 핸들은 2개의 암시적 인수가 있는 함수를 참조해야 합니다(그래픽스 객체 콜백과 유사).

    function [res] = myfunction(obj,event_obj)
    % obj          handle to the object clicked on
    % event_obj    struct for event data (empty in this release)
    % res [output] a logical flag determines whether the zoom
    %              operation should take place(for 'res' set
    %              to 'false' or the 'ButtonDownFcn' property
    %              of the object should take precedence (when
    %              'res' is 'true')
    
  • ActionPreCallback <function_handle> — 확대/축소 전에 실행할 함수

    확대/축소 작업이 시작될 때 코드를 실행하려는 경우 이 콜백을 설정하십시오. 다음과 같이, 이 입력 함수 핸들은 2개의 암시적 인수가 있는 함수를 참조해야 합니다(그래픽스 객체 콜백과 유사).

    function myfunction(obj,event_obj)
    % obj         handle to the figure clicked on
    % event_obj   object containing struct of event data
    

    이벤트 데이터에는 다음과 같은 필드가 있습니다.

    Axes

    확대/축소되는 좌표축의 핸들

  • ActionPostCallback <function_handle> — 확대/축소 후에 실행할 함수

    확대/축소 작업을 마칠 때 코드를 실행하려는 경우 이 콜백을 설정하십시오. 다음과 같이, 이 입력 함수 핸들은 2개의 암시적 인수가 있는 함수를 참조해야 합니다(그래픽스 객체 콜백과 유사).

    function myfunction(obj,event_obj)
    % obj         handle to the figure clicked on
    % event_obj   object containing struct of event data 
    %             (same as the event data of the 
    %             'ActionPreCallback' callback)

확대/축소 모드 유틸리티 함수

확대/축소 모드에서 다음 함수는 특정 속성을 쿼리하고 설정합니다.

  • flags = isAllowAxesZoom(h,ax) — 좌표축 확대/축소 권한을 쿼리하는 함수입니다.

    axes 핸들로 구성된 벡터 ax를 입력값으로 사용하여 zoom 객체 h에 대해 함수 isAllowAxesZoom을 호출하면 해당 axes 객체에서 확대/축소 작업이 허용되는지 여부를 표시하는, axes 핸들 벡터와 동일한 차원의 논리형 배열이 반환됩니다.

  • setAllowAxesZoom(h,ax,flag) — 좌표축 확대/축소 권한을 설정하는 함수입니다.

    axes 핸들로 구성된 벡터 ax와 논리형 스칼라 flag를 사용하여 zoom 객체 h에 대해 함수 setAllowAxesZoom을 호출하면 axes 객체에 대해 확대/축소 작업을 허용하거나 허용하지 않을 수 있습니다.

  • cn = getAxesZoomConstraint(h,ax) — 확대/축소 작업의 제약 조건을 가져오는 함수입니다.

    axes 객체 ax를 입력값으로 지정하여 zoom 객체 h에 대해 함수 getAxesZoomConstraint를 호출하면 좌표축에 대한 제약 조건이 반환됩니다. 반환된 제약 조건의 값은 'x', 'y', 'z', 'xy', 'xz', 'yz' 또는 'unconstrained'입니다.

  • setAxesZoomConstraint(h,ax,cnstr) — 확대/축소 작업의 제약 조건을 설정하는 함수입니다.

    axes 객체 ax와 제약 조건 옵션 cnstr을 사용하여 zoom 객체 h에 대해 함수 setAxesZoomConstraint를 호출하면 해당 좌표축에 대한 제약 조건이 설정됩니다. 제약 조건의 값을 'x', 'y', 'z', 'xy', 'xz', 'yz' 또는 'unconstrained'로 지정합니다.

  • sty = getAxes3DPanAndZoomStyle(h,ax) — 확대/축소 작업의 스타일을 가져오는 함수입니다.

    axes 핸들로 구성된 벡터 ax를 입력값으로 사용하여 zoom 객체 h에 대해 함수 getAxes3DPanAndZoomStyle을 호출하면 각 좌표축에 대한 확대/축소 스타일이 반환됩니다. 각 좌표축에 대해 반환되는 값은 'limits' 또는 'camera'입니다.

  • setAxes3DPanAndZoomStyle(h,ax,style) — 확대/축소 작업의 스타일을 설정하는 함수입니다.

    axes 핸들로 구성된 벡터 ax와 문자형 배열 style을 사용하여 zoom 객체 h에 대해 함수 setAxes3DPanAndZoomStyle을 호출하면 각 좌표축에 확대/축소 스타일이 설정됩니다. 스타일을 'limits' 또는 'camera'로 지정합니다.

  • cns = getAxesZoomMotion(h,ax) — 확대/축소 작업의 제약 조건을 가져오는 함수입니다(권장하지 않으며 getAxesZoomConstraint를 사용하는 것이 좋음).

    axes 객체로 구성된 벡터 ax를 입력값으로 사용하여 zoom 객체 h에 대해 함수 getAxesZoomMotion을 호출하면 ax와 같은 차원의 문자로 구성된 셀형 배열이 반환됩니다. 이것은 각 좌표축에 대한 제약 조건을 나타냅니다. 각 좌표축에 대해 반환되는 값은 'horizontal', 'vertical' 또는 'both'입니다.

  • setAxesZoomMotion(h,ax,constraints) — 확대/축소 작업의 제약 조건을 설정하는 함수입니다(권장하지 않으며 setAxesZoomConstraint를 사용하는 것이 좋음).

    axes 객체로 구성된 벡터 ax와 문자형 배열 style을 사용하여 zoom 객체 h에 대해 함수 setAxesZoomMotion을 호출하면 각 좌표축에 대한 제약 조건이 설정됩니다. 제약 조건을 'horizontal', 'vertical' 또는 'both'로 지정합니다.

예제

예제 1 — 확대/축소 모드로 들어가기

다음과 같이 그래프를 플로팅하고 확대/축소 모드를 켭니다.

plot(1:10);
zoom on
% zoom in on the plot

예제 2 — 제한된 확대/축소하기

확대/축소 모드 객체를 만들고 x축 확대/축소로 제한합니다.

참고

R2014b부터는 점 표기법을 사용하여 속성을 설정할 수 있습니다. 이전 릴리스를 사용 중인 경우에는 set 함수를 대신 사용하십시오(예: set(h,'Motion','horizontal')).

plot(1:10);
h = zoom;
h.Motion = 'horizontal';
h.Enable = 'on';
% zoom in on the plot in the horizontal direction.

예제 3 — 서브플롯에서 제한된 확대/축소하기

4개의 좌표축을 서브플롯으로 만들고 각 axes 핸들에 대한 속성을 다르게 설정하여 각 좌표축에 대해 확대/축소 스타일을 다르게 설정합니다.

ax1 = subplot(2,2,1);
plot(1:10);
h = zoom;
ax2 = subplot(2,2,2);
plot(rand(3));
setAllowAxesZoom(h,ax2,false);
ax3 = subplot(2,2,3);
plot(peaks);
setAxesZoomMotion(h,ax3,'horizontal');
ax4 = subplot(2,2,4);
contour(peaks);
setAxesZoomMotion(h,ax4,'vertical');
% Zoom in on the plots.

예제 4 — ButtonDown 콜백 코딩하기

트리거할 확대/축소 모드 객체에 대한 buttonDown 콜백을 만듭니다. 다음 코드를 새 파일에 복사하고, 실행하고, 확대/축소 동작을 관찰합니다.

참고

R2014b부터는 점 표기법을 사용하여 속성을 설정할 수 있습니다. 이전 릴리스를 사용 중인 경우에는 set 함수를 대신 사용하십시오(예: set(hLine,'ButtonDownFcn','disp(''This executes'')')).

function demo
% Allow a line to have its own 'ButtonDownFcn' callback.
hLine = plot(rand(1,10));
hLine.ButtonDownFcn = 'disp(''This executes'')';
hLine.Tag = 'DoNotIgnore';
h = zoom;
h.ButtonDownFilter = @mycallback;
h.Enable = 'on';
% mouse click on the line
%
function [flag] = mycallback(obj,event_obj)
% If the tag of the object is 'DoNotIgnore', then return true.
objTag = obj.Tag;
if strcmpi(objTag,'DoNotIgnore')
   flag = true;
else
   flag = false;
end

예제 5 — 사전/사후 콜백 동작 코딩하기

트리거할 확대/축소 모드 객체의 사전/사후 buttonDown 이벤트에 대한 콜백을 만듭니다. 다음 코드를 새 파일에 복사하고, 실행하고, 확대/축소 동작을 관찰합니다.

참고

R2014b부터는 점 표기법을 사용하여 속성을 설정할 수 있습니다. 이전 릴리스를 사용 중인 경우에는 set 함수를 대신 사용하십시오(예: set(h,'ActionPreCallback',@myprecallback)).

function demo
% Listen to zoom events
plot(1:10);
h = zoom;
h.ActionPreCallback = @myprecallback;
h.ActionPostCallback = @mypostcallback;
h.Enable = 'on';
%
function myprecallback(obj,evd)
disp('A zoom is about to occur.');
%
function mypostcallback(obj,evd)
newLim = evd.Axes.XLim;
msgbox(sprintf('The new X-Limits are [%.2f %.2f].',newLim));

예제 6 — 확대/축소 모드에 대한 상황별 메뉴 만들기

사용자가 마우스 오른쪽 버튼 클릭 동작으로 패닝 모드로 전환할 수 있는 상황별 메뉴를 코딩합니다.

참고

R2014b부터는 점 표기법을 사용하여 속성을 설정할 수 있습니다. 이전 릴리스를 사용 중인 경우에는 set 함수를 대신 사용하십시오(예: set(hZoom,'UIContextMenu',hCMZ)).

figure
plot(magic(10))
hCMZ = uicontextmenu;
hZMenu = uimenu('Parent',hCMZ,'Label','Switch to pan',...
'Callback','pan(gcbf,''on'')');
hZoom = zoom(gcf);
hZoom.UIContextMenu = hCMZ;
zoom('on')
내장된 확대/축소 상황별 메뉴에 항목을 추가할 수는 없지만, 메뉴를 자신의 메뉴로 바꿀 수는 있습니다.

zoom은 커서가 좌표축 내에 있을 때 마우스 버튼을 누를 때마다 2배율로 좌표축 제한을 변경(확대 또는 축소)합니다. 또는 마우스를 클릭하고 끌어서 확대/축소 영역을 정의하거나, 두 번 클릭하여 초기 확대/축소 수준으로 돌아갈 수 있습니다.

예제 3에 표시된 대로, 확대/축소 모드 객체를 한 번 만든 후 이를 사용하여 다양한 좌표축의 동작을 사용자 지정할 수 있습니다. 실행 중에 해당 콜백 함수를 수정할 수도 있습니다.

참고

대화형 모드에서 Figure 콜백을 변경하지 마십시오. 모드가 활성 상태일 때(패닝, 확대/축소 등), Figure의 콜백을 변경하려고 시도하면 경고 메시지가 표시되고 변경 작업이 실패합니다. 이 규칙에 대한 한 가지 예외는 Figure WindowButtonMotionFcn 콜백으로, 이 콜백은 모드 내에서 변경할 수 있습니다. 그러므로, Figure의 콜백을 업데이트하는 UI를 생성하는 경우, 이 UI는 아무튼 업데이트 작업을 시도하기 전에, 어떤 대화형 모드가 활성 상태인지를 추적해야 합니다(그런 활성 상태가 있는 경우).

모드 객체를 통해 여러 subplot 좌표축에 다양한 확대/축소 동작을 할당한 다음 linkaxes 함수를 사용하여 이러한 좌표축을 연결하면, 이전에 다른 좌표축에 대해 설정한 동작에 관계없이 마우스로 조작하는 좌표축의 동작이 연결된 좌표축으로 넘어갑니다.

대안

도구 모음의 확대/축소 툴을 사용하여 플롯에서 확대 또는 축소하거나, Figure의 툴(Tools) 메뉴에서 확대(Zoom In) 또는 축소(Zoom Out)를 선택합니다.

참고 항목

| |

R2006a 이전에 개발됨