Отображение графики в 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, можно создать дополнительные графики, такие как перечисленные в следующей таблице. Большинство этих графиков требует другого типа родительского объекта и дополнительных строк кода в вашем приложении. Все они используют нормированные модули положения по умолчанию.
| Функции | Кодирование деталей |
|---|---|
polarplotpolarhistogrampolarscattercompass | Создайте полярные оси путем вызова
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 | Выполните эти шаги:
Например: 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 | Создайте мозаичное размещение графика в панели и создайте оси в нем с помощью 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) |
geobubbleheatmapparallelplotscatterhistogramstackedplotwordcloud | Задайте родительский контейнер при вызывании этих функций (например, Например: h = heatmap(app.UIFigure,rand(10)); |
geoplotgeoscattergeodensityplot | Создайте географические оси путем вызова
latSeattle = 47 + 37/60; lonSeattle = -(122 + 20/60); gx = geoaxes(app.UIFigure); geoplot(gx,latSeattle,lonSeattle) |
С R2020b некоторая графическая функциональность не поддерживается в App Designer. Эта таблица приводит функциональность, которая относится к большинству рабочих процессов создания приложений.
| Категория | Не поддерживаемый |
|---|---|
| Анимация |
|
| Получение и сохранение данных | Вместо Фигуры, созданные программно с |
| Утилиты | Вместо |
| Функции, не Рекомендуемые | |
| Свойства |
|
UI Figure Properties | UIAxes Properties