Многие графические функции в MATLAB ® (и панели инструментов MATLAB) имеют аргумент для указания целевых осей или родительского объекта. Этот аргумент необязателен в большинстве контекстов, но при вызове этих функций в App Designer необходимо указать этот аргумент. Причина в том, что в большинстве контекстов MATLAB по умолчанию использует gcf или gca для получения целевого объекта для операции. Но эти функции зависят от HandleVisibility свойство родительской фигуры, являющейся 'on', и HandleVisibility свойство фигур App Designer имеет значение 'off' по умолчанию. Это означает, что gcf и gca не работают как обычно. В результате исключение аргумента для целевых осей или родительского объекта может привести к неожиданным результатам.
В зависимости от вызываемой графической функции может потребоваться указать:
A UIAxes компонент на холсте
Родительский контейнер в приложении
Компонент осей, созданный программно в коде приложения
Существует несколько способов задания целевого компонента для графической функции. Ниже приведены некоторые примеры наиболее распространенных синтаксисов. Чтобы определить правильный целевой объект и синтаксис в контексте, см. документацию для конкретной используемой графической функции.
Наиболее распространенным способом отображения графики в App Designer является указание UIAxes объект на холсте App Designer в качестве целевого объекта графической функции. При перетаскивании компонента осей из библиотеки компонентов на холст создается UIAxes объект в приложении. Имя по умолчанию для объекта осей App Designer: app.UIAxes. Чтобы определить или изменить имя определенных осей на холсте, выберите компонент осей. Его имя отображается в списке и может быть отредактировано в обозревателе компонентов
Многие графические функции имеют необязательный первый входной аргумент для задания объекта целевых осей. Например, оба plot функции и hold таким образом, функция принимает объект целевых осей. Для печати двух линий на наборе осей на холсте укажите имя объекта-оси в качестве первого аргумента для каждой вызываемой функции.
plot(app.UIAxes,[1 2 3 4],'-r'); hold(app.UIAxes); plot(app.UIAxes,[10 9 4 7],'--b');
Некоторые графические функции требуют указания объекта целевых осей в качестве аргумента «имя-значение». Например, при вызове imshow и triplot укажите объект-ось для отображения с помощью 'Parent' аргумент «имя-значение». Этот код отображает изображение на существующем наборе осей на холсте:
imshow('peppers.png','Parent',app.UIAxes);
Некоторые графические функции отображаются в компоненте контейнера, например фигура, панель или сетка, а не объект-ось. Например, heatmap имеет необязательный первый аргумент для указания контейнера, в котором будет отображаться диаграмма.
Каждое приложение App Designer имеет объект фигуры по умолчанию app.UIFigure, который является контейнером для компонентов, составляющих главное окно приложения. Определить app.UIFigure в качестве аргумента родительского контейнера для отображения графики в главном окне приложения. Например, чтобы создать тепловую карту в приложении, используйте следующий синтаксис:
h = heatmap(app.UIFigure,rand(10));
Чтобы упорядочить и разделить графику, использующую входной аргумент родительского контейнера, перетащите компонент контейнера, такой как панель, вкладка или компоновка сетки, из библиотеки компонентов на холст. Определите имя компонента, выбрав его и просмотрев его имя в обозревателе компонентов. Затем можно указать этот контейнер в качестве родительского при вызове графической функции.
Другие часто используемые графические функции, которые принимают родительский контейнер в качестве входных данных, включают annotation, geobubble, parallelplot, scatterhistogram, stackedplot, и wordcloud.
Некоторые графические функции отображают данные на специализированных осях. Например, функции, отображающие полярные данные, должны делать это на PolarAxes объект. В отличие от этого, UIAxes объекты, которые можно добавить в приложение из библиотеки компонентов, необходимо добавить специализированные оси в приложение программно в коде. Чтобы программно создать объект axes, создайте StartupFcn Обратный вызов приложения. В нем вызовите соответствующую графическую функцию и укажите родительский контейнер в приложении в качестве цели.
Функции, такие как polarplot, polarhistogram, и polarscatter взять объект полярных осей в качестве цели. Создайте полярные оси программным путем, вызвав polaraxes функция. Например, для печати полярного уравнения на панели сначала перетащите компонент панели из библиотеки компонентов на холст. В коде приложения создайте объект полярных осей, вызвав polaraxes и задание панели в качестве родительского контейнера. Затем постройте график уравнения с помощью polarplot , указывая полярные оси в качестве целевых осей.
theta = 0:0.01:2*pi; rho = sin(2*theta).*cos(2*theta); pax = polaraxes(app.Panel); polarplot(pax,theta,rho)
Функции, такие как geoplot, geoscatter, и geodensityplot взять объект географических осей в качестве цели. Создайте географические оси программным путем, вызвав geoaxes функция. Например, для печати географических данных на панели используется следующий код:
latSeattle = 47 + 37/60; lonSeattle = -(122 + 20/60); gx = geoaxes(app.Panel); geoplot(gx,latSeattle,lonSeattle)
Для создания мозаики нескольких диаграмм с помощью tiledlayout создайте компоновку мозаичной диаграммы на панели и программно создайте в ней оси с помощью nexttile функция. Возврат объекта-оси из nexttile и используйте ее, чтобы указать оси для диаграмм или графиков.
t = tiledlayout(app.Panel,2,1); [X,Y,Z] = peaks(20) % Tile 1 ax1 = nexttile(t); surf(ax1,X,Y,Z) % Tile 2 ax2 = nexttile(t); contour(ax2,X,Y,Z)
Некоторые графические функции, такие как ginput и gtext, не имеют аргумента для указания цели. В результате необходимо установить HandleVisibility свойство фигуры App Designer для 'callback' или 'on' перед вызовом этих функций. После вызова этих функций можно установить HandleVisibility свойство возвращается к 'off'. Например, этот код показывает, как определить обратный вызов, который позволяет идентифицировать координаты двух точек с помощью ginput функция.
function pushButtonCallback(app,event) app.UIFigure.HandleVisibility = 'callback'; ginput(2) app.UIFigure.HandleVisibility = 'off'; end
Размеры фигур в App Designer можно изменить по умолчанию. Это означает, что при запуске приложения и изменении размеров окна фигуры размеры компонентов на рисунке автоматически изменяются и их расположение изменяется. Однако некоторые графические функции не поддерживают автоматическое изменение размеров. Чтобы использовать эти функции в App Designer, создайте панель для отображения выходных данных функции и установите AutoResizeChildren свойства панели для 'off'. Это свойство можно задать на вкладке «Инспектор» обозревателя компонентов или в коде.
Например, subplot функция не поддерживает автоматическое изменение размеров. Чтобы использовать эту функцию в приложении, выполните следующие действия.
Перетащите компонент панели из библиотеки компонентов на холст.
Установите AutoResizeChildren свойства панели для 'off'.
Укажите панель в качестве родительского контейнера с помощью 'Parent' аргумент «имя-значение» при вызове subplot. Кроме того, укажите выходной аргумент для хранения осей.
Вызовите функцию печати с осями в качестве первого входного аргумента.
app.Panel.AutoResizeChildren = 'off'; ax1 = subplot(1,2,1,'Parent',app.Panel); ax2 = subplot(1,2,2,'Parent',app.Panel); plot(ax1,[1 2 3 4]) plot(ax2,[10 9 4 7])
Другие часто используемые функции, которые не поддерживают автоматическое изменение размеров, включают pareto и plotmatrix.
Дополнительные сведения об управлении поведением при изменении размера см. в разделе Альтернативы поведению при автоматическом изменении размера по умолчанию.
С R2021a года некоторые графические функции не поддерживаются в App Designer. В этой таблице перечислены неподдерживаемые функциональные возможности, наиболее подходящие для рабочих процессов создания приложений.
| Категория | Не поддерживается |
|---|---|
| Анимация | movie функция не поддерживается. |
| Извлечение и сохранение данных | Эти функции не поддерживаются: Вместо Фигуры, созданные программно с помощью |
| Утилиты | Вместо |
| Веб-приложения | Если для создания развернутого веб-приложения используется App Designer (требуется MATLAB Compiler™), применяются дополнительные ограничения графики. Дополнительные сведения см. в разделе Ограничения и неподдерживаемая функциональность (компилятор MATLAB). |
Свойства рисунка пользовательского интерфейса | Свойства UIAxes