Отображение графики в App Designer

Отображение графики в App Designer требует различного рабочего процесса, чем вы обычно используете в командной строке MATLAB®. Если вы понимаете этот рабочий процесс и несколько особых случаев, вы будете знать, как вызвать необходимые функции для отображения почти любого типа графика.

Вызывание графических функций

Многие графические функции в MATLAB (и тулбоксы MATLAB) имеют аргумент для определения целевых осей или родительского объекта. Этот аргумент является дополнительным в большинстве контекстов, но когда вы вызываете эти функции в App Designer, необходимо задать тот аргумент. В противном случае MATLAB использует gcf или gca, чтобы получить целевой объект для операции. Однако gcf не может возвратить фигуру App Designer, и gca не может возвратить оси в фигуре App Designer. Таким образом исключение аргумента может привести к неожиданным результатам.

Этот код показывает, как задать целевые оси при строении двух графиков. Первый аргумент передал plot, и hold является app.UIAxes, который является именем по умолчанию для осей App Designer.

plot(app.UIAxes,[1 2 3 4],'-r');
hold(app.UIAxes);
plot(app.UIAxes,[10 9 4 7],'--b');

Некоторые функции (такие как imshow и triplot) используют аргумент в виде пар "имя-значение", чтобы задать целевой объект. Например, этот код показывает, как вызвать функцию imshow в App Designer.

imshow('peppers.png','Parent',app.UIAxes);
Задаете ли вы целевой объект в качестве первого аргумента, или аргумент в виде пар "имя-значение" зависит от функции. См. документацию для определенной функции, которую вы хотите использовать, чтобы определить соответствующие аргументы.

Отображение графиков Используя другие типы осей

Можно создать большинство 2D и 3-D графиков с помощью осей App Designer (объект uiaxes). Начиная в R2018b, можно создать дополнительные графики, такие как перечисленные в следующей таблице. Большинство этих графиков требует другого типа родительского объекта и дополнительных строк кода в вашем приложении. Все они используют нормированные единицы по умолчанию.

ФункцииКодирование деталей
polarplot
polarhistogram
polarscatter
компас

Создайте полярные оси путем вызывания функции polaraxes. Задайте родительский контейнер как первый входной параметр (например, app.UIFigure Фигура пользовательского интерфейса. Затем вызовите функцию построения графика с полярными осями в качестве первого аргумента. Например:

theta = 0:0.01:2*pi;
rho = sin(2*theta).*cos(2*theta);
pax = polaraxes(app.UIFigure);
polarplot(pax,theta,rho)

подграфик

Выполните эти шаги:

  1. Установите свойство AutoResizeChildren на 'off'. Подграфики не поддерживают поведение при автоматическом изменении размера. Можно установить это свойство в панели Свойств компонентов App Designer или в коде.

  2. Задайте родительский контейнер с помощью аргумента в виде пар "имя-значение" 'Parent', когда вы вызовете subplot. Кроме того, задайте выходной аргумент, чтобы сохранить оси.

  3. Вызовите функцию построения графика с осями как первый входной параметр.

Например:

app.UIFigure.AutoResizeChildren = 'off';
ax1 = subplot(1,2,1,'Parent',app.UIFigure);
ax2 = subplot(1,2,2,'Parent',app.UIFigure);
plot(ax1,[1 2 3 4])
plot(ax2,[10 9 4 7])

парето
plotmatrix

Выполните эти шаги:

  1. Установите свойство AutoResizeChildren на 'off'. Эти графики не поддерживают поведение при автоматическом изменении размера. Можно установить это свойство в панели Свойств компонентов App Designer или в коде.

  2. Создайте оси путем вызывания функции axes. Задайте родительский контейнер как первый входной параметр (например, app.UIFigure Фигура пользовательского интерфейса.

  3. Вызовите pareto или функцию plotmatrix с осями как первый входной параметр.

Например:

app.UIFigure.AutoResizeChildren = 'off';
ax = axes(app.UIFigure);
pareto(ax,[10 20 40 40])

geobubble
тепловая карта
scatterhistogram
stackedplot
wordcloud

Задайте родительский контейнер при вызывании этих функций (например, app.UIFigure Фигура пользовательского интерфейса.

Например:

h = heatmap(app.UIFigure,rand(10));

geoplot
geoscatter
geodensityplot

Создайте географические оси путем вызывания функции geoaxes. Задайте родительский контейнер как первый входной параметр (например, app.UIFigure Фигура пользовательского интерфейса. Затем вызовите функцию построения графика с осями в качестве первого аргумента. Например:

latSeattle = 47 + 37/60;
lonSeattle = -(122 + 20/60);
gx = geoaxes(app.UIFigure);
geoplot(gx,latSeattle,lonSeattle)

Неподдерживаемая функциональность

С R2018b некоторая графическая функциональность не поддержана в App Designer. Эта таблица приводит функциональность, которая относится к большинству рабочих процессов создания приложений.

КатегорияНе поддерживаемый
Анимация
Получение и сохранение данных
Утилиты
Функции, не Рекомендуемые
Панель инструментов осей
  • Панель инструментов осей не поддержана ни для каких графиков в App Designer. Однако можно включить некоторые интерактивные функции путем вызова pan, zoom или функций rotate3d. Задайте оси в качестве первого аргумента и задайте 'on', 'off' или масштабный коэффициент (для zoom) в качестве второго аргумента.

Взаимодействия осей
  • Панорамирование, изменение масштаба, и вращают (для 3-D), поддержаны для графиков, вы создаете использование axes и uiaxes. Советы данных не поддержаны.

  • Некоторые взаимодействия не могут работать в geobubble, heatmap, scatterhistogram, stackedplot или графиках, вы создаете использование geoaxes.

Оси в менеджерах по размещению сетки
  • axes, polaraxes, geoaxes, geobubble, heatmap, scatterhistogram, stackedplot и wordcloud не поддерживают менеджеров по размещению сетки. Чтобы работать вокруг этого ограничения, поместите оси или график в панель. Затем поместите панель в сетку.

  • uiaxes не имеет этого ограничения.

Оси в контейнерах с возможностью прокрутки
  • axes, polaraxes, geoaxes, geobubble, heatmap, scatterhistogram, stackedplot и wordcloud не поддерживают контейнеры с возможностью прокрутки. Чтобы работать вокруг этого ограничения, поместите оси или график в панель с набором свойств Scrollable к 'off'. Затем поместите панель в контейнер с возможностью прокрутки.

  • uiaxes не имеет этого ограничения.

Компоненты
Свойства
  • Некоторые свойства компонентов не поддержаны в App Designer. Для списка поддерживаемых свойств для конкретного компонента смотрите его страницу свойств при Разработке Приложений в App Designer.

Смотрите также

|

Похожие темы

Была ли эта тема полезной?