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 включает режим изменения масштаба. Когда режим изменения масштаба включен в фигуре, нажав кнопку мыши, в то время как ваш курсор в изменения масштаба осей в точку или от точки ниже мыши. Изменение масштаба изменяет пределы осей. При использовании режима изменения масштаба, вас

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

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

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

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

    • Одновременно нажмите 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'YZx, y , 'xz', 'yz', или 'unconstrained'.

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

    Вызов функционального setAxesZoomConstraint на объекте изменения масштаба, h, с объектом осей, ax, и ограничительная опция, cnstr, устанавливает ограничение для осей. Задайте ограничение как одно из этих значений: 'x'YZx, y , '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