pan

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

Синтаксис

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

Описание

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

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

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

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

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

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

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

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

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

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

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

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

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

  • UseLegacyExplorationModes 'off' (по умолчанию) | логическое значение on/off - Устаревший режим, заданный как 'on' или 'off', или как числовое или логическое 1 (true) или 0 (false). Значение 'on' эквивалентно true, и 'off' эквивалентно false. Таким образом, можно использовать значение этого свойства как логическое значение. Значение сохранено в виде логического значения on/off типа 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', 'y', 'z', 'xy', 'xz', 'yz', или 'unconstrained'.

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

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

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

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

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

Примеры

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

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

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

Создайте обратный коллбэк 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 - Кодирование поведения перед и после постколлбэка

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

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 оси через объект mode, а затем связать их с помощью linkaxes функция, поведение осей, которыми вы манипулируете с помощью мыши, переносится на связанные оси, независимо от поведения, которое вы ранее задали для других осей.

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

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

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

расширить все

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

Представлено до R2006a
Для просмотра документации необходимо авторизоваться на сайте