Отобразите графику в 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');

Точно так же можно задать плановый показатель путем определения первого аргумента как app.UIFigure. Например, этот код создает аннотацию стрелы на рисунке App Designer.

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

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

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

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

Некоторые функции не поддерживают поведение при автоматическом изменении размера, включая pareto, plotmatrix, и subplot. Перед использованием этих функций, набор AutoResizeChildren свойство родительского контейнера к 'off'.

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

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

Можно создать большинство 2D и 3-D графиков с помощью осей App Designer (a 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)

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

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)

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)

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

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

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

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

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

Утилиты

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

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

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

|

Похожие темы