Effacer les filtres
Effacer les filtres

How to set ylim in axes in GUI ?

22 vues (au cours des 30 derniers jours)
Jay Patel
Jay Patel le 23 Juil 2019
Commenté : Adam Danz le 8 Août 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 ??

Réponse acceptée

Jay Patel
Jay Patel le 23 Juil 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 commentaires
Jay Patel
Jay Patel le 23 Juil 2019
Modifié(e) : Jay Patel le 23 Juil 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 le 23 Juil 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.

Connectez-vous pour commenter.

Plus de réponses (1)

Adam Danz
Adam Danz le 23 Juil 2019
Modifié(e) : Adam Danz le 23 Juil 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 commentaires
lamine moahmed
lamine moahmed le 8 Août 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 le 8 Août 2020
Plot the data first, then set the axis limits.
Alternativey, set the axis limits first, then "hold on", then plot the data.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Specifying Target for Graphics Output dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by