How to set ylim in axes in GUI ?

27 次查看(过去 30 天)
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 ??

采纳的回答

Jay Patel
Jay Patel 2019-7-23
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 个评论
Jay Patel
Jay Patel 2019-7-23
编辑:Jay Patel 2019-7-23
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 2019-7-23
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.

请先登录,再进行评论。

更多回答(1 个)

Adam Danz
Adam Danz 2019-7-23
编辑:Adam Danz 2019-7-23
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 个评论
lamine moahmed
lamine moahmed 2020-8-8
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 2020-8-8
Plot the data first, then set the axis limits.
Alternativey, set the axis limits first, then "hold on", then plot the data.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Specifying Target for Graphics Output 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by