изменение масштаба

Включите или выключите изменение масштаба или увеличьте фактором

Синтаксис

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

Описание

zoom on включает режим изменения масштаба. Когда режим изменения масштаба включен в фигуре, нажав кнопку мыши, в то время как ваш курсор в изменения масштаба осей в точку или от точки ниже мыши. Изменение масштаба изменяет пределы осей. При использовании режима изменения масштаба, вас

  • Увеличение путем расположения курсора мыши, где вы хотите центр графика быть и также

    • Нажмите кнопку мыши или

    • Вращайте колесико прокрутки мыши далеко от вас (вверх).

  • Уменьшение путем расположения курсора мыши, где вы хотите центр графика быть и также

    • Одновременно нажмите Shift и кнопку мыши, или

    • Вращайте колесико прокрутки мыши к вам (вниз).

Каждое нажатие кнопки клика мыши или колесика прокрутки увеличивает масштаб или фактором 2.

При перетаскивании по оси, когда увеличивание масштаб включено, чертят rubberband поле. Когда вы отпускаете кнопку мыши, оси увеличивают масштаб в область, заключенную rubberband полем.

Двойной клик по оси возвращает оси в свою начальную установку изменения масштаба и в увеличении и в уменьшении режимов.

zoom off выключает режим изменения масштаба. При запуске в R2018b некоторые взаимодействия изменения масштаба включены по умолчанию, независимо от режима изменения масштаба. Если вы хотите отключить эти взаимодействия по умолчанию, то используйте функцию disableDefaultInteractivity.

zoom out возвращает график в его начальную установку изменения масштаба.

zoom reset помнит текущее изменение масштаба, устанавливающее как начальную установку изменения масштаба. Более поздние вызовы zoom out, или дважды кликает, когда интерактивный режим zoom включен, возвратится к этому уровню изменения масштаба.

zoom переключается режим изменения масштаба между прочь и на (восстановление последний раз используемого инструмента изменения масштаба).

zoom xon и zoom yon установите zoom on для x-и оси Y, соответственно.

zoom(factor) увеличивает масштаб или заданным фактором изменения масштаба, не влияя на интерактивный режим изменения масштаба. Значения, больше, чем 1 увеличение той суммой, в то время как числа, больше, чем 0 и меньше чем 1 уменьшение 1/factor.

zoom(fig, option) Любая из предыдущих опций может быть задана на фигуре кроме текущей фигуры с помощью этого синтаксиса.

h = zoom(figure_handle) возвращает объект режима изменения масштаба для фигуры figure_handle для вас, чтобы настроить поведение режима.

Используя объекты режима изменения масштаба

Можно получить доступ к следующим свойствам.

  • Enable 'on'|'off' — Задает, включен ли этот режим фигуры в настоящее время на фигуре.

  • FigureHandle <handle> — Связанный указатель фигуры, свойство только для чтения, которое не может быть установлено.

  • Motion 'horizontal'|'vertical'|'both' — Тип изменения масштаба активированного для фигуры. Это свойство только влияет на оси в 2D представлении ([0 90]).

  • Direction 'in'|'out' — Направление операции изменения масштаба.

  • RightClickAction 'InverseZoom'|'PostContextMenu' — Поведение действия щелчка правой кнопкой.

    Значение 'InverseZoom' заставляет щелчок правой кнопкой уменьшать масштаб. Значение 'PostContextMenu' отображает контекстное меню. Эта установка сохраняется между сеансами MATLAB®.

  • UIContextMenu <handle> — Задает пользовательское контекстное меню, которое будет отображено во время действия щелчка правой кнопкой.

    Это свойство проигнорировано, если свойство RightClickAction было установлено в 'InverseZoom'.

Изменение масштаба обратных вызовов режима

Можно программировать следующие коллбэки для операций режима изменения масштаба.

  • ButtonDownFilter <function_handle> — Функционируйте, чтобы прервать события ButtonDown

    Приложение может запретить операцию изменения масштаба при обстоятельствах, которые программист задает, в зависимости от того, что возвращает коллбэк. Указатель функции ввода должен сослаться на функцию с двумя неявными аргументами (подобный коллбэкам графического объекта), можно следующим образом:

    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> — Функция, чтобы выполниться перед изменением масштаба

    Установите этот коллбэк, если вы хотите выполнить код, когда операция изменения масштаба запускается. Указатель функции ввода должен сослаться на функцию с двумя неявными аргументами (подобный коллбэкам графического объекта), можно следующим образом:

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

    Данные о событиях имеют следующее поле.

    Axes

    Указатель осей, который масштабируется

  • ActionPostCallback <function_handle> — Функция, чтобы выполниться после изменения масштаба

    Установите этот коллбэк, если вы хотите выполнить код, когда операция изменения масштаба заканчивается. Указатель функции ввода должен сослаться на функцию с двумя неявными аргументами (подобный коллбэкам графического объекта), можно следующим образом:

    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) — Разрешение запроса функции масштабировать оси.

    Вызывая функциональный isAllowAxesZoom на объекте изменения масштаба, h, с вектором указателей осей, ax, когда вход возвращает логический массив той же размерности как оси, обрабатывает вектор, который указывает, разрешена ли операция изменения масштаба на объектах осей.

  • setAllowAxesZoom(h,ax,flag) — Функционируйте, чтобы установить разрешение масштабировать оси.

    Вызывая функциональный setAllowAxesZoom на объекте изменения масштаба, h, с вектором указателей осей, ax и логического скаляра, flag, или позволяет или запрещает операцию изменения масштаба на объектах осей.

  • cn = getAxesZoomConstraint(h,ax) — Функция, чтобы получить ограничения операций изменения масштаба.

    Вызывая функциональный getAxesZoomConstraint на объекте изменения масштаба, h, с объектом осей, ax, когда вход возвращает ограничение для осей. Возвращенное ограничение является одним из этих значений: 'x', 'y', 'z', 'xy', 'xz', 'yz' или 'unconstrained'.

  • setAxesZoomConstraint(h,ax,cnstr) — Функционируйте, чтобы установить ограничения операций изменения масштаба.

    Вызывая функциональный setAxesZoomConstraint на объекте изменения масштаба, h, с объектом осей, ax, и ограничительной опцией, cnstr, устанавливает ограничение для осей. Задайте ограничение как одно из этих значений: 'x', 'y', 'z', 'xy', 'xz', 'yz' или 'unconstrained'.

  • sty = getAxes3DPanAndZoomStyle(h,ax) — Функция, чтобы получить стиль операций изменения масштаба.

    Вызывая функциональный getAxes3DPanAndZoomStyle на объекте изменения масштаба, h, с вектором указателей осей, ax, когда вход возвращает стиль изменения масштаба для каждого, исключает. Возвращенное значение для каждого исключает, или 'limits' или 'camera'.

  • setAxes3DPanAndZoomStyle(h,ax,style) — Функционируйте, чтобы установить стиль операций изменения масштаба.

    Вызывая функциональный setAxes3DPanAndZoomStyle на объекте изменения масштаба, h, с вектором указателей осей, ax, и символьного массива, style, устанавливает стиль изменения масштаба на каждом, исключает. Задайте стиль или как 'limits' или как 'camera'.

  • cns = getAxesZoomMotion(h,ax) — Функция, чтобы получить ограничения операций изменения масштаба (не рекомендуемый, используйте getAxesZoomConstraint).

    Вызывая функциональный getAxesZoomMotion на объекте изменения масштаба, h, с вектором объектов осей, ax, когда вход возвращает символьный массив ячеек той же размерности как ax, который указывает, ограничение для каждого исключает. Возвращенное значение для каждого исключает, 'horizontal', 'vertical' или 'both'.

  • setAxesZoomMotion(h,ax,constraints) — Функционируйте, чтобы установить ограничения операций изменения масштаба (не рекомендуемый, используйте setAxesZoomConstraint).

    Вызывая функциональный setAxesZoomMotion на объекте изменения масштаба, h, с вектором объектов осей, ax, и символьного массива, style, устанавливает ограничение для каждого, исключает. Задайте ограничения как 'horizontal', 'vertical' или 'both'.

Примеры

Пример 1 - переходящий к режиму изменения масштаба

Постройте график и включите режим Zoom:

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 - ограниченное увеличение подграфиков

Создайте четыре оси как подграфики и установите стиль изменения масштаба по-другому для каждого путем установки различного свойства для каждого указателя осей:

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

Создайте консервативный коллбэк для объектов режима изменения масштаба к триггеру. Скопируйте следующий код в новый файл, выполните его и наблюдайте поведение изменения масштаба.

Примечание

Начиная в 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 - кодирующий пред - и поведение постобратного вызова

Создайте коллбэки для пред - и постконсервативные события для режима изменения масштаба возражает против триггера. Скопируйте следующий код в новый файл, выполните его и наблюдайте поведение изменения масштаба.

Примечание

Начиная в 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 - создание контекстного меню для режима изменения масштаба

Кодирование контекстного меню, которое позволяет пользователю, чтобы переключиться на режим Pan путем щелчка правой кнопкой.

Примечание

Начиная в 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 иллюстрирует. Можно также изменить его функции обратного вызова на лету.

Примечание

Не изменяйте коллбэки фигуры в интерактивном режиме. В то время как режим активен (при панорамировании, масштабируя, и т.д.), вы получите предупреждение, при попытке изменить какой-либо из коллбэков фигуры, и операция не успешно выполнится. Одним исключением к этому правилу является фигура коллбэк WindowButtonMotionFcn, который может быть изменен из режима. Поэтому, если вы создаете пользовательский интерфейс, который обновляет коллбэки фигуры, пользовательский интерфейс должен так или иначе отслеживать, которых интерактивный режим активен, если таковые имеются, прежде, чем попытаться сделать это.

Когда вы присваиваете различные поведения изменения масштаба различным осям subplot через объект режима и затем соединяете их использующий функцию linkaxes, поведение осей, которыми вы управляете с мышью, переносит на соединенные оси, независимо от поведения, которое вы ранее устанавливаете для других осей.

Альтернативы

Используйте инструменты Zoom на панели инструментов на увеличение или уменьшение на графике, или выберите Zoom In или Zoom Out из меню Tools фигуры.

Смотрите также

| |

Представлено до R2006a