How do I break y-axis to improve visualisation when plotting intervals as errorbars?

I have the following set of data:
x = [1 2 3 4 5];
lower_bound = [7.41e-3 0.65 3.2e-4 2.1e-4 1.2e-4];
upper_bound = [9.35e-3 0.7 6.4e-4 2.4e-4 1.4e-4];
I have written some code to plot these vectors as intervals in a graph as follows:
subs = (upper_bound - lower_bound)/2;
num_inside = subs + lower_bound;
lb = abs(lower_bound - num_inside);
ub = abs(upper_bound - num_inside);
y = num_inside;
errorbar(x,y,lb,ub,'.')
So, how can I break the y-axis in such way that there is no too much wasted space in y-axis and that all the intervals are fairly visible?
I have tried the Breakplot function (https://blogs.mathworks.com/pick/2008/11/21/breaking-a-plot-to-improve-visualization/#3) however, I can only make it work to plot the intervals in the errorbar format.
P.D. If there is any other suggestion about how to plot intervals in matlab for good visualization I will appreciate it.

Answers (1)

"P.S. If there is any other suggestion about how to plot intervals in matlab for good visualization I will appreciate it."
For such widely disparate data sizes, I'd suggest
hAx=gca;
hAx.YScale='log';
xFact=0.25; % room-giving constant for x-axis boundaries
xlim([[x(1) x(end)]+[-1 1]*xFact)
hAx.XTicks=1:x(end);
I don't believe there's any linear axis that will be able to clearly amplify all the data across the range other than one for each order of magnitude which would be even more difficult for user to interpret than the log scale in my opinion...

1 Comment

Thanks for your answer dpb.
"I don't believe there's any linear axis that will be able to clearly amplify all the data across the range other than one for each order of magnitude which would be even more difficult for user to interpret than the log scale in my opinion..."
I think the option is to use log scale.

Sign in to comment.

Asked:

on 14 May 2019

Commented:

on 15 May 2019

Community Treasure Hunt

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

Start Hunting!