How to set ylim in axes in GUI ?

31 views (last 30 days)
Jay Patel
Jay Patel on 23 Jul 2019
Commented: Adam Danz on 8 Aug 2020
My program works around the user input provided from user. It generates graph accordingly.But somehow I had set or default value for axes in Matlab GUI is [999 999] in my case, but my y-axis can be more than that. When i enter the value more than 999 in the text box, GUI didn't execute the function written for pushbutton. This works fine below 1000. I am wondering how can i change the Ylim to auto ?
When you enter 1000 in the 2nd input(Please refer figure), it gives following error:
Error using matlab.graphics.axis.Axes/set
Value must be a 1x2 vector of numeric type in which the second element is larger than the first and may be Inf
Error in axis>LocSetLimits (line 276)
set(ax,...
Error in axis (line 105)
LocSetLimits(ax(j),cur_arg,names);
Error in plotray (line 134)
axis( [ rmin, rmax, zmin, zmax ] )
Error in UnderwaterRayToolbox>pushbutton1_Callback (line 194)
plotray( 'munkp' ), box on, hold on
Error in gui_mainfcn (line 95)
feval(varargin{:});
Error in UnderwaterRayToolbox (line 49)
gui_mainfcn(gui_State, varargin{:});
Error in
matlab.graphics.internal.figfile.FigFile/read>@(hObject,eventdata)UnderwaterRayToolbox('pushbutton1_Callback',hObject,eventdata,guidata(hObject))
276 set(ax,...
Can someone suggest how to change the Axes Ylimit to Auto or set to user input ??

Accepted Answer

Jay Patel
Jay Patel on 23 Jul 2019
The problem has been solved. main *.m file has to have the ylim function before plotting which controls the plotting. and then either you can copy the axes from figure or call the figure in GUI, both worked.
12.JPG
Thanks everyone, specially Adam and Rik.
Jay
  3 Comments
Jay Patel
Jay Patel on 23 Jul 2019
Edited: Jay Patel on 23 Jul 2019
Hi adam,
plotray is also a function which is called by bellhop to plot the output. And what i mean to say by "copy the axes from the figure" is just MAKE AXES CURRENT FIRST and "call the figure in GUI" means copying the current figure(plotted by plotray function)'s all objects in GUI's axes children. This is more specific to my case here. I'm very sorry for not being so much descriptive. In general your answer would make more sense.
Thanks.
Adam Danz
Adam Danz on 23 Jul 2019
If you can, open up plotray() and create an input that allows you to specify the axis handle. If you can do that, no need to use axes() to make an axis current and no need to create a figure and then copy its content into your GUI's axes.

Sign in to comment.

More Answers (1)

Adam Danz
Adam Danz on 23 Jul 2019
Edited: Adam Danz on 23 Jul 2019
ylim(h,[a,b])
% h: the axis handle
% [a,b] the limits (a<b)
Make sure you're specifying the axis handle (h). Otherwise, the callback function might change the y axis limit of another axes.
  9 Comments
lamine moahmed
lamine moahmed on 8 Aug 2020
Hi jay patel can you halp me
i wont to set xlim and ylim of axes when i plot data of workspace
but when i plot the xlim and ylim change
thank you
Adam Danz
Adam Danz on 8 Aug 2020
Plot the data first, then set the axis limits.
Alternativey, set the axis limits first, then "hold on", then plot the data.

Sign in to comment.

Categories

Find more on Specifying Target for Graphics Output in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!