Plot bar chart with log scale on y axis with different base
조회 수: 23 (최근 30일)
이전 댓글 표시
I am ploting bar chart with log scale on y axis. I am using following code for log scale on y-axis.
set(gca,'YScale','log').
As default log scale base is 10 and I need to try different basis to fit my data.
please suggest how I can change log base for bar graph.
댓글 수: 3
Rik
2020년 9월 21일
Just make sure your baseline is below the lowest value, but above 0. That should make sure you can see all non-zero bars.
답변 (1개)
Sindar
2020년 9월 20일
% set whatever base you want (incl. decimals)
mybase = 2;
% get current limits
yl = ylim();
% convert to log-mybase scale
yt = reallog(yl) / log(mybase);
if any(isinf(yt))
error('don''t use log scale with zero limits')
end
% round outwards
yt(1) = floor(yt(1));
yt(2) = ceil(yt(2));
% set ticks to every power
% you may want to replace that '1' if too large of a range
% for bases less than 1, replace with '-1'
yts = yt(1):1:yt(2);
yticks(mybase.^yts);
% write the ticks in mybase^tick notation
yticklabels(compose('%g^{%d}',mybase,yts))
댓글 수: 1
Sindar
2020년 9월 20일
if the minor grid lines show up and annoy you as much as me:
set(gca,'YMinorGrid','off')
참고 항목
카테고리
Help Center 및 File Exchange에서 Bar Plots에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!