Многие графические функции в MATLAB® (и тулбоксы MATLAB) имеют аргумент для определения целевых осей или родительского объекта. Этот аргумент является дополнительным в большинстве контекстов, но когда вы вызываете эти функции в App Designer, необходимо задать этот аргумент. Причина состоит в том что, в большинстве контекстов, значений по умолчанию MATLAB к использованию gcf
или gca
функции, чтобы получить целевой объект для операции. Но эти функции зависят от HandleVisibility
свойство родительской фигуры, являющейся 'on'
, и HandleVisibility
свойство фигур App Designer установлено в 'off'
по умолчанию. Это означает это gcf
и gca
не работайте нормальными. В результате не используя аргумент для целевые оси или родительский объект могут привести к неожиданным результатам.
В зависимости от графической функции вы вызываете, вы можете должны быть задать:
UIAxes
компонент на холсте
Родительский контейнер в вашем приложении
Компонент осей, который вы создаете программно в вашем коде приложения
Существует много способов задать целевой компонент для графической функции. Некоторые примеры наиболее распространенных синтаксисов приведены ниже. Чтобы определить правильную цель и синтаксис в вашем контексте, см. документацию для определенной графической функции, которую вы используете.
Наиболее распространенный способ отобразить графику в App Designer состоит в том, чтобы задать UIAxes
объект на холсте App Designer как графическая функциональная цель. Когда вы перетаскиваете компонент осей от Component Library на холст, это создает UIAxes
возразите в своем приложении. Именем по умолчанию для объекта осей App Designer является app.UIAxes
. Чтобы определить или изменить название определенные оси на вашем холсте, выберите компонент осей. Его имя перечислено и может быть отредактировано в Component Browser
Много графических функций имеют дополнительный первый входной параметр, чтобы задать целевой объект осей. Например, оба 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));
Чтобы далее организовать и разделить графика, которая берет входной параметр родительского контейнера, перетащите контейнерный компонент, такой как панель, вкладка или размещение сетки от Component Library на холст. Определите имя компонента путем выбора его и просмотра его имени в Component Browser. Можно затем задать этот контейнер как родительский элемент, когда вы вызываете графическую функцию.
Другие обычно используемые графические функции, которые берут родительский контейнер в качестве входа, включают annotation
, geobubble
, parallelplot
, scatterhistogram
, stackedplot
, и wordcloud
.
Некоторые графические функции отображают данные на графике по специализированным осям. Например, функции, которые отображают полярные данные на графике, должны сделать так на PolarAxes
объект. В отличие от UIAxes
объекты, которые можно добавить в приложение от Component Library, необходимо добавить специализированные оси в приложение программно в коде. Чтобы создать объект осей программно, создайте StartupFcn
коллбэк для вашего приложения. В нем вызовите соответствующую графическую функцию и задайте родительский контейнер в своем приложении как цель.
Функционирует такой как polarplot
, polarhistogram
, и polarscatter
возьмите объект полярных осей в качестве цели. Создайте полярные оси программно путем вызова polaraxes
функция. Например, чтобы построить полярное уравнение в панели, сначала перетащите компонент панели от Component Library на ваш холст. В коде для вашего приложения создайте объект полярных осей путем вызова 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'
. Можно установить это свойство во вкладке Inspector Component Browser или в коде.
Например, subplot
функция не поддерживает автоматическое изменение размеров. Использовать эту функцию в вашем приложении:
Перетащите компонент панели от Component Library на ваш холст.
Установите 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 Compiler). |
UI Figure Properties | UIAxes Properties