필터 지우기
필터 지우기

Histogram Y axis to Logarithmic Scale

조회 수: 262 (최근 30일)
Anthony
Anthony 2011년 8월 3일
댓글: Eric Rouviere 2019년 7월 11일
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',)

답변 (2개)

the cyclist
the cyclist 2011년 8월 3일
set(gca,'YScale','log')
  댓글 수: 3
Tim Marks
Tim Marks 2017년 4월 3일
I tried the cyclist's command
set(gca,'YScale','log')
on a histogram that I plotted in Matlab 2016b using the "histogram" command, and it worked like a charm. It kept the graph as a histogram, and just changed the y-axis to logarithmic scale, exactly as desired. Maybe it only works properly in recent versions of Matlab, but it did exactly what was needed.
Eric Rouviere
Eric Rouviere 2019년 7월 11일
You are using hist(). Try using histogram().

댓글을 달려면 로그인하십시오.


Walter Roberson
Walter Roberson 2011년 8월 3일
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
Jamie
Jamie 2018년 6월 22일
This is great, thanks! I use basevalue of 0.1 so that single occurrences are visible.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Histograms에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by