Histogram Y axis to Logarithmic Scale

423 views (last 30 days)
Anthony
Anthony on 3 Aug 2011
Commented: Eric Rouviere on 11 Jul 2019
I trying to set the Y- axis of a histogram to Logarithimic Scale. I know I can use Y tick but I trying to figure out how I can get the best formulae for this I would be grateful for any help rendered.
hist(data(1:29196,3)) set(gca,'YTick',)

Answers (2)

the cyclist
the cyclist on 3 Aug 2011
set(gca,'YScale','log')
  3 Comments
Eric Rouviere
Eric Rouviere on 11 Jul 2019
You are using hist(). Try using histogram().

Sign in to comment.


Walter Roberson
Walter Roberson on 3 Aug 2011
The reason your histogram disappears is that the histogram draws each bar down to the value 0, and log(0) is -infinity, so the graphics engine chops off those lines.
Unfortunately changing this behavior is not easy if you require that hist() be used. When you use hist(), the drawn graphic is in the form of a patch. It is possible to set() new YData for the patch, but when you do so other internal aspects of the patch get changed and it ends up a mess.
What you are better off using is:
[n, xout] = hist(data(1:29196,3));
bar(xout, n, 'barwidth', 1, 'basevalue', 1);
set(gca,'YScale','log')
This will cause the bar graph to be drawn only from 1 upward instead of from 0 upward, and log(1) is not a problem to draw.
  1 Comment
Jamie
Jamie on 22 Jun 2018
This is great, thanks! I use basevalue of 0.1 so that single occurrences are visible.

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!