pan

Представление панорамирования графика в интерактивном режиме

Синтаксис

pan on
pan xon
pan yon
pan off
pan
pan(fig,...)
h = pan(fig)

Описание

pan on включает режим панорамирования для осей в текущей фигуре.

pan xon включает режим панорамирования и позволяет панорамировать только в направлении X для осей в 2D представлении в текущей фигуре.

pan yon включает режим панорамирования и позволяет панорамировать только в направлении Y для осей в 2D представлении в текущей фигуре.

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

pan переключается режим панорамирования для осей в текущей фигуре к on или off.

pan(fig,...) устанавливает режим панорамирования для осей в заданной фигуре.

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

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

Доступ к следующим свойствам объектов режима панорамирования.

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

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

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

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

  • UseLegacyExplorationModes 'off' (значение по умолчанию) | логическое значение включения - выключения – режим Legacy в виде 'on' или 'off', или как числовой или логический 1 TRUE) или 0 ложь). Значение 'on' эквивалентно true, и 'off' эквивалентно false. Таким образом можно использовать значение этого свойства как логическое значение. Значение хранится как логическое значение включения - выключения типа matlab.lang.OnOffSwitchState.

    Установка этого свойства к 'on' изменяет поведение режимов взаимодействия в фигурах пользовательского интерфейса, таким образом, они совпадают с поведением режимов в традиционных фигурах. Для получения дополнительной информации смотрите enableLegacyExplorationModes. Если это свойство установлено в 'on', это не может быть возвращено к 'off'. Это свойство только применяется к объектам панорамирования за фигуры, созданные с помощью uifigure функционируйте или в MATLAB® Online™.

Обратные вызовы режима панорамирования

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

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

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

    function [res] = myfunction(obj,event_obj)
    % obj          handle to the object clicked on
    % event_obj    event data (empty in this release)
    % res [output] a logical flag to determine whether the pan
    %              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 that has been clicked on
    % event_obj   object containing struct of event data
    

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

    Axes

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

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

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

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

Служебные функции режима панорамирования

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

  • flags = isAllowAxesPan(h,ax) — Разрешение запроса функции панорамировать оси.

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

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

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

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

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

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

    Вызов функционального setAxesPanConstraint на объекте панорамирования, 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 = getAxesPanMotion(h,ax) — Функция, чтобы получить ограничения операций панорамирования (не рекомендуемый, используйте getAxesPanConstraint).

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

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

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

Примеры

Пример 1 - переход к режиму панорамирования

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

plot(magic(10));
pan on
% pan on the plot

Пример 2 - ограниченное панорамирование

Ограничьте панорамирование к оси X с помощью set:

plot(magic(10));
h = pan;
h.Motion = 'horizontal';
h.Enable = 'on';
% pan on the plot in the horizontal direction.

Пример 3 - ограниченное панорамирование в подграфиках

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

ax1 = subplot(2,2,1);
plot(1:10);
h = pan;
ax2 = subplot(2,2,2);
plot(rand(3));
setAllowAxesPan(h,ax2,false);
ax3 = subplot(2,2,3);
plot(peaks);
setAxesPanMotion(h,ax3,'horizontal');
ax4 = subplot(2,2,4);
contour(peaks);
setAxesPanMotion(h,ax4,'vertical');
% pan on the plots.

Пример 4 - кодирование обратного вызова ButtonDown

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

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 = pan;
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.

% Indicate what the target is.
disp(['Clicked ' obj.Type ' object'])
objTag = obj.Tag;
if strcmpi(objTag,'DoNotIgnore')
   flag = true;
else
   flag = false;
end

Пример 5 - кодирующий пред - и поведение постобратного вызова

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

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

Пример 6 - создание контекстного меню для режима панорамирования

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

figure
plot(magic(10)); 
hCM = uicontextmenu; 
hMenu = uimenu('Parent',hCM,'Label','Switch to zoom',...
        'Callback','zoom(gcbf,''on'')'); 
hPan = pan(gcf); 
hPan.ContextMenu = hCM; 
pan('on')
Вы не можете добавить элементы во встроенное контекстное меню панорамирования, но можно заменить его на собственное.

Советы

Можно создать объект режима панорамирования однажды и использовать его, чтобы настроить поведение различных осей, когда Пример 3 иллюстрирует. Можно также изменить его функции обратного вызова на лету.

Примечание

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

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

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

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

Вопросы совместимости

развернуть все

Не рекомендуемый запуск в R2020a

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