MATLAB Answers

0

determine axis limits *before* plotting..?

Asked by Brad Stiritz on 9 Sep 2012
Accepted Answer by Jan
Hi everyone,
I need to determine the y-axis limits "before" rendering my plot, b/c the elements are rendered in a loop, one at a time. xlim() isn't any use in this case. Will I have to reverse-engineer MATLAB's algorithm, or is there another approach?
Thanks, Brad

  3 Comments

Oleg Komarov
2012 年 9 月 9 日
I don't understand your question. Can't you use xlim after the loop?
Hi Oleg,
Thanks for your question. Let me clarify: within the rendering loop, MATLAB is forced to reset the y-axis limits & re-render the whole plot each time a new figure element is drawn which exceeds the current limits. Doing this hundreds of times for a single plot is significantly time-consuming.
Therefore, as I said, I want to determine & set the y-axis limits via ylim() "before" the rendering loop. Does this make sense?
Thanks, Brad
Oleg Komarov
2012 年 9 月 9 日
I think we might help you if you posted the code.

Sign in to comment.

2 Answers

Answer by Jan
on 9 Sep 2012
Edited by Jan
on 10 Sep 2012
 Accepted Answer

Yair has explained some tricks to http://undocumentedmatlab.com/blog/plot-performance/. You can set the XLimMode of the current axes to 'fixed' and let Matlab determine the limits at the end only by resetting it to 'auto'.
[EDITED, link fixed, thanks Yair]

  3 Comments

Brad Stiritz 2012 年 9 月 9 日
Jan, thanks, I this this might work for me. I'll test out & report back here.
Yair Altman
2012 年 9 月 10 日
Brad Stiritz 2012 年 9 月 10 日
Yair, thanks for the very helpful blog postings. Your work is greatly appreciated, as always!

Sign in to comment.


回答者: Image Analyst
2012 年 9 月 9 日

You can save the y and x limits for the current axes at any time by using the ylim and xlim functions:
% Save initial limits.
initial_ylim_values = ylim();
initial_xlim_values = xlim();
% Now plot something that will change the ylimits
plot(x, y); % Some y that will change the y limits.
after_ylim_values = ylim();
after_xlim_values = xlim();

  2 Comments

Brad Stiritz 2012 年 9 月 9 日
Hi, thanks for your comment. I'm not sure you're seeing my situation? Please see my response to Oleg, above..
Image Analyst
2012 年 9 月 9 日
Then you need to set "hold on" and MATLAB will "lock down" all those settings and not allow subsequent plots to change them.

Sign in to comment.