How to stop App Designer resizing UIAxes?

조회 수: 31 (최근 30일)
Peter Valent
Peter Valent 2019년 3월 23일
댓글: Ali Shahabi 2022년 8월 26일
I have created a simple APP using the App Designer. It plots a simple graph into an UIAxes object. The problem is that the position of y-axis is moved based on the width of y-labels. In the future the APP will consist of several axes that should be perfectly aligned with the same width of x-axis. See the picture bellow:
I would like to maintain the same position of both the x-axis and y-axis not taking into account the width of the labels. It works when the program is build in GUIDE, however, I would like to make it in App Designer. Is it possible?
See the picture bellow for how it works in GUIDE and what I would like to achieve in App Designer:

채택된 답변

Adam Danz
Adam Danz 2019년 3월 23일
편집: Adam Danz 2022년 5월 25일
Ideally you would save the inner position of the axis, do the plotting, and then restore the inner axis position. But the 'InnerPosition' property of axes in app designer is read-only (why!?? who knows). So here's a work around.
In your plotting function,
  1. Before plotting, save the original read-only 'InnerPosition' values
  2. Do your plotting
  3. Calculate the difference between the new inner position and old inner position
  4. Change the 'Position' value so that the inner position matches what it used to be.
axInnerPos = app.UIAxes.InnerPosition; %1) store original inner position of axis
% plot() %2) do your plotting, etc.
innerPosDiff = axInnerPos - app.UIAxes.InnerPosition; %3) calculate difference between original and current inner ax pos.
app.UIAxes.Position = app.UIAxes.Position + innerPosDiff; %4) change the 'position' so inner position matches original values
Update: See Mischa Kim's comment below for MATLAB R2020b and later.
  댓글 수: 4
Linus Olofsson
Linus Olofsson 2022년 5월 25일
I don't think my uiaxes are resizing, but the title element keeps moving anyways.
When setting the position constraint in my app's start up function, this does not stop the title of my uiaxes from moving and it always appears on top of what I'm plotting. For example, when I'm using the imshowpair() function and display something that is smaller than the original uiaxes, the tile moves with the size of what I'm plotting.
I don't want to show axes or tick marks, but even if I do so, plotting using imshowpair() seems to erase them even if I set the axes, tick marks, grid lines, etc to foreground. Maybe I have other problems?
My attached app will not run as it tries to connect to a server/load large local files, but might show the problem.
Ali Shahabi
Ali Shahabi 2022년 8월 26일
Did you find the solution for the issue?

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 App Building에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by