How to access displayed axis limits when scaling is logarithmic and data partly negative?

7 Ansichten (letzte 30 Tage)
Hi,
I plot data. Some of the data are quite noisy and occasionally negative values appear, but I'm not interested in them. I apply a logarithmic y-axis scaling. Matlab issues a warning, that 'Negative data are ignored'. I use axis tight which adjusts the axes limits so that the displayed data (i.e. only the positive data!) just fit into the axes.
Now here's my question: How can I access the displayed y-limits?
get(axes_handle, 'YLim') returns the limits of all the data (positive and negative), so that the upper limit matches the displayed upper limit but the lower limit (negative) does not!
Here's a small example:
figure;
data = [-1 10 100 1000];
plot(data);
set(gca,'YScale','log');
axis tight;
ylim
The displayed y-limits are [10 1000] but ylim returns [-1 1000].
Anyone know a solution?
Stephan.

Antworten (2)

Matt Tearle
Matt Tearle am 28 Mär. 2012
A hack would be to use the YTick values instead, as there's always a tick at the top and the bottom by default.
yl = get(gca,'YTick');
yl = yl([1,end])

C.J. Harris
C.J. Harris am 28 Mär. 2012
After you set 'axis tight' call the following commmand:
set(gca, 'YLimMode', 'auto')
Then 'ylim' should return:
[10 1000]
  1 Kommentar
Stephan Heise
Stephan Heise am 30 Mär. 2012
Thanks for the hint, Chris. If |YLimMode| is |auto| , |ylim| is indeed returned correctly. A drawback of this workaround is that the axis may not be "tight" after setting |YLimMode| to |auto|.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu 2-D and 3-D Plots finden Sie in Help Center und File Exchange

Tags

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by