Отображение графики в 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
compass

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

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

Или, создайте график компаса в похожем способе:

rng(0,'twister')
M = randn(20,20);
Z = eig(M);
app.Axes = axes(app.Panel);
compass(app.Axes,Z)

subplot

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

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

  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])

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)

pareto
plotmatrix

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

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

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

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

Например:

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

geobubble
heatmap
parallelplot
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)

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

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

КатегорияНе поддерживаемый
Анимация
Аннотации
  • Аннотации создаются с annotation функция.

Получение и сохранение данных

Фигуры, созданные программно с uifigure действительно поддержите saveзагрузкаsavefig, и openfig функции.

Утилиты
Функции, не Рекомендуемые
Оси в менеджерах по размещению сетки или контейнерах с возможностью прокрутки
  • Менеджеры по размещению сетки и контейнеры с возможностью прокрутки не поддерживают axespolaraxes, geoaxes, или графики (такие как heatmapgeobubble, или stackedplot) это может быть дочерним элементом фигуры.

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

Обходные решения:

  • Чтобы работать вокруг менеджера по размещению сетки ограничение, поместите оси или график в панель. Затем поместите панель в сетку.

  • Чтобы работать вокруг контейнерного ограничения с возможностью прокрутки, поместите оси или график в панель с Scrollable набор свойств к 'off'. Затем поместите панель в контейнер с возможностью прокрутки.

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

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

|

Похожие темы