App Designer keeps telling me to "specify a uiaxes handle as first argument" when the first argument is a uiaxes handle

154 Ansichten (letzte 30 Tage)
When I push a button I want to create blank axes and then plot data on them. In the push button callback this is part of my code
ax1 = uiaxes(app.PlotsTab, 'Position', [x y w h]);
plot(ax1, app.P2x, app.P2y)
This seems to work as expected however App Designer tells me to "specify UIaxes handle as first argument." I am wondering if I have overlooked something or if my syntax is incorrect. Any information is appreciated. Thanks in advance.
  2 Kommentare
Steven Lord
Steven Lord am 20 Sep. 2017
Set a breakpoint on that first line of your code then run your code. When you reach that breakpoint, before that line that tries to create the uiaxes runs, execute this command and show what it returns.
class(app.PlotsTab)
Tyler Johns
Tyler Johns am 20 Sep. 2017
Bearbeitet: Tyler Johns am 20 Sep. 2017
When I set the breakpoint and execute the following command in the command window this is what it returns
class(app.PlotsTab)
ans =
matlab.ui.container.Tab
Also, if I run the following command after the axes is created it returns
class(ax1)
ans =
matlab.ui.control.UIaxes
I assumed that meant ax1 was indeed the UIaxes handle

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Chris Portal
Chris Portal am 23 Sep. 2017
Tyler, it sounds like the code is executing properly, but the message you're referring to is not a run-time error, but instead a programming alert popping up inside the editor. If this is the case, you can safely ignore the alert.
It is interpreting your syntax as being incorrect because it expects the first argument to PLOT to be of the form:
app.YourAxesComponent
This is because in the vast majority of use cases, an axes handle needs to be stored as part of the app so it can be easily accessed later within a callback. In your specific case, you can store the UIAxes handle in your app by creating a property and setting it to the UIAxes handle upon creating it. To access it, you would need to specify app., which is analogous to doing handle. in the GUIDE world. (Since app. was a common programming oversight, the alert was added to catch the issue early for users.)
If you prefer to not store the UIAxes handle as part of your app, you can avoid seeing the alert by disabling the "Enable app coding alerts" checkbox in the Editor tab. This however will hide all alerts, so take that into consideration.
  3 Kommentare
David K
David K am 7 Sep. 2021
Is there a way to suppress these warnings in appDesigner using the %#<ID> notation? If so, how do I determine what the correct Message ID is?
Deming Zhang
Deming Zhang am 10 Jan. 2022
I have the same problem. The method of using "app.ax" does not work for me. It keeps warning me to specify an uiaxes handle as the first argument:
hfg = uifigure();
hfg.AutoResizeChildren = 'off';
app.ax1 = subplot(2,1,1,'Parent', hfg);
plot(app.ax1, t, h);
I am using R2019b.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Marion Gebhard
Marion Gebhard am 8 Jul. 2019
I still have the warning. what is wrong with the code
properties (Access = public)
% für Plots die Achsen name als Property definieren
ax;
ax1;
ax2;
end
p1fig=uifigure('Name','plot1','Color','white');
p1fig.ToolBar='none';
p1fig.MenuBar='none';
app.ax=uiaxes(p1fig,'XLim',[x_min_axis,x_max_axis],'YLim', [y_min_axis,y_max_axis],'XGrid','on',"YGrid","on");
app.ax.Interactions=[];
app.ax.Toolbar.Visible='off';
app.ax.Title.String=app.DIA1_TXT(1,1);
app.ax.XLabel.String=app.DIA1_TXT(1,2);
app.ax.YLabel.String=app.DIA1_TXT(1,3);
% call Plot
plot(app.ax,rt_ScopeData1(:,1), rt_ScopeData1(:,2:size(rt_ScopeData1,2)),'-','LineWidth',2);
legend(app.ax,app.LTEXT1, 'Location','southeast');
In the plot and Legend command there still comes the warning
"Specify a UIAxes handle as first argument"
Iwould like to undrerstand why this warning still comes.

Kategorien

Mehr zu 2-D and 3-D Plots 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!

Translated by