Представление панорамирования графика в интерактивном режиме
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>
— Связанный указатель фигуры, свойство только для чтения, которое не может быть установлено.
Можно программировать следующие коллбэки для операций режима панорамирования.
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 данных о событиях имеет следующее поле:
| Указатель осей, который панорамируется |
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'
.
Постройте график и включите режим Pan:
plot(magic(10)); pan on % pan on the plot
Ограничьте панорамирование к оси X с помощью set
:
plot(magic(10)); h = pan; h.Motion = 'horizontal'; h.Enable = 'on'; % pan on the plot in the horizontal direction.
Создайте четыре оси как подграфики и дайте каждому различное поведение панорамирования:
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.
Создайте консервативный коллбэк для объектов режима панорамирования к триггеру. Скопируйте следующий код в новый файл, выполните его и наблюдайте поведение панорамирования:
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
Создайте коллбэки для пред - и постконсервативные события для режима панорамирования возражает против триггера. Скопируйте следующий код в новый файл, выполните его и наблюдайте поведение панорамирования:
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));
Кодирование контекстного меню, которое позволяет пользователю, чтобы переключиться, чтобы масштабировать режим путем щелчка правой кнопкой:
figure plot(magic(10)); hCM = uicontextmenu; hMenu = uimenu('Parent',hCM,'Label','Switch to zoom',... 'Callback','zoom(gcbf,''on'')'); hPan = pan(gcf); hPan.UIContextMenu = hCM; pan('on')
Можно создать объект режима панорамирования однажды и использовать его, чтобы настроить поведение различных осей, когда Пример 3 иллюстрирует. Можно также изменить его функции обратного вызова на лету.
Не изменяйте коллбэки фигуры в интерактивном режиме. В то время как режим активен (при панорамировании, масштабируя, и т.д.), вы получите предупреждение, при попытке изменить какой-либо из коллбэков фигуры, и операция не успешно выполнится. Одним исключением к этому правилу является фигура коллбэк WindowButtonMotionFcn
, который может быть изменен из режима. Поэтому, если вы создаете пользовательский интерфейс, который обновляет коллбэки фигуры, пользовательский интерфейс должен некоторые отслеживать, которых интерактивный режим активен, если таковые имеются, прежде, чем попытаться сделать это.
Когда вы присваиваете различные поведения панорамирования различным осям subplot
через объект режима и затем соединяете их использующий функцию linkaxes
, поведение осей, которыми вы управляете с мышью, переносит на соединенные оси, независимо от поведения, которое вы ранее устанавливаете для других осей.
Используйте инструмент Pan на панели инструментов, чтобы включить и отключить режим панорамирования на графике или выбрать Pan из меню Tools фигуры.