Отобразите графику в App Designer

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

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

Многие графические функции в MATLAB (и тулбоксы MATLAB) имеют аргумент для определения целевых осей или родительского объекта. Этот аргумент является дополнительным в большинстве контекстов, но когда вы вызываете эти функции в App Designer, необходимо задать тот аргумент. Причина состоит в том что, в большинстве контекстов, значений по умолчанию MATLAB к использованию gcf или gca функции, чтобы получить целевой объект для операции. Однако HandleVisibility свойство фигур App Designer установлено в 'off' по умолчанию. Это означает тот 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)

Отобразите аннотации в фигурах App Designer

Начиная в R2020a, аннотации создаются с annotation функция поддерживается в фигурах App Designer. Чтобы создать аннотацию, вызовите annotation функция, задавая фигуру пользовательского интерфейса как первый входной параметр. Например:

x = [0.3 0.5];
y = [0.6 0.5];
annotation(app.UIFigure,'arrow',x,y)

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

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

КатегорияНе поддерживаемый
Анимация
Получение и сохранение данных

Вместо saveas функция, используйте exportgraphics или copygraphics функции, чтобы сохранить графику в приложении.

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

Утилиты

Вместо print функция, используйте exportgraphics или copygraphics функции, чтобы сохранить графику в приложении.

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

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

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

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

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

Свойства
  • Компоненты возражают как TableменюПанель, Tab, TabGroup, и ButtonGroup поддержите различные свойства в App Designer, чем в приложениях, созданных с figure функция. Для списка компонентов, поддержанных в App Designer и ссылках на их страницы свойств, смотрите Компоненты App Building.

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

|

Похожие темы