Отображение графики в 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 | Создайте полярные оси путем вызова
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 | Выполните эти шаги:
Например: 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) |
pareto plotmatrix | Выполните эти шаги:
Например: app.UIFigure.AutoResizeChildren = 'off';
ax = axes(app.UIFigure);
pareto(ax,[10 20 40 40]) |
geobubble heatmap parallelplot scatterhistogram stackedplot wordcloud | Задайте родительский контейнер при вызывании этих функций (например, Например: h = heatmap(app.UIFigure,rand(10)); |
geoplot geoscatter geodensityplot | Создайте географические оси путем вызова
latSeattle = 47 + 37/60; lonSeattle = -(122 + 20/60); gx = geoaxes(app.UIFigure); geoplot(gx,latSeattle,lonSeattle) |
Начиная в R2020a, аннотации создаются с annotation
функция поддерживается в фигурах App Designer. Чтобы создать аннотацию, вызовите annotation
функция, задавая фигуру пользовательского интерфейса как первый входной параметр. Например:
x = [0.3 0.5];
y = [0.6 0.5];
annotation(app.UIFigure,'arrow',x,y)
С R2020a некоторая графическая функциональность не поддержана в App Designer. Эта таблица приводит функциональность, которая относится к большинству рабочих процессов создания приложений.
Категория | Не поддерживаемый |
---|---|
Анимация | |
Получение и сохранение данных | Вместо Фигуры, созданные программно с |
Утилиты | Вместо |
Функции, не Рекомендуемые | |
Оси в менеджерах по размещению сетки или контейнерах с возможностью прокрутки | Обходные решения:
|
Свойства |
|
UI Figure Properties | UIAxes Properties