How to align axes in AppDesigner
    9 Ansichten (letzte 30 Tage)
  
       Ältere Kommentare anzeigen
    
    Kristoffer Walker
 am 6 Dez. 2024
  
    
    
    
    
    Kommentiert: Kristoffer Walker
 am 12 Dez. 2024
            Hi Folks,
In AppDesigner, is there a simple way to code up a PlotAll(app) function that can easily align vertically the x-axes for vertically stacked axes that have the same "Position" coordinates?  For example, below is an example where I have three aligned UIAxes that have the same pixel horizontal positions and thicknesses, but when I plot, the axes labels and the magnitude of the y-axis data values end up causing the plot internal axes to reposition themselves and be mis-aligned.
Thank you,
Kris

Akzeptierte Antwort
Weitere Antworten (1)
  Strider
 am 8 Dez. 2024
        
      Bearbeitet: Strider
 am 8 Dez. 2024
  
      Using a <https://www.mathworks.com/help/matlab/ref/tiledlayout.html tiledlayout> would do this for you without any additional position calculus. 
You would only need to specify a uipanel as the parent of your tiled layout. See the example below.
Something to consider when using UI axes is that it is essientially a UIPanel and axes together (I think I read that on a mathworks answer one time). Using something like tiledlayout and regular axes is usually better performance (initial creation, and reactivity) and it can do everything a UIAxes can do.
One difference is you do have to programatically asign callbacks, unlike UIAxes that you can do in the app designer.
clearvars
% data
x1=0:.1:1;
y1=x1;
y2=100*y1;
% tiled layout
% p = some parent like a uipanel
% t = tiledlayout(p,'vertical')
t=tiledlayout('vertical');
% first axis
ax=nexttile(t);
plot(ax, x1, y1)
ylabel(ax,'Label1 left')
hold(ax,'on')
yyaxis right
plot(ax,x1,y2)
ylabel(ax,'Label1 right')
ylim(ax,[0 10]) % just to show both lines
% next axis
ax2=nexttile(t);
plot(ax2, x1, y2)
ylabel(ax2,'Label2 left')
hold(ax2,'on')
yyaxis right
plot(ax2,x1,y1)
ylabel(ax2,'Label2 right')
ylim(ax2,[0 10]) % just to show both lines
% insert push button callback to your app to add / delete axes
9 Kommentare
  Voss
      
      
 am 11 Dez. 2024
				@Kristoffer Walker: The syntax "tiledlayout(parent)", i.e., not specifying the tiledlayout arrangement or dimensions, was introduced in R2024b (see the item here under R2024b), so that explains why
t = tiledlayout(app.UIFigure);
doesn't work for you under R2022b.
Similarly, specifying "vertical" or "horizontal" as the arrangement was introduced in R2023a, so those are also unavailable.
In R2022b, looks like your options are:
% use 'flow' arrangement
t = tiledlayout(app.UIFigure,'flow');
% or specify the dimensions
t = tiledlayout(app.UIFigure,3,2);
Siehe auch
Kategorien
				Mehr zu Manage Products finden Sie in Help Center und File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!





