Plot bar chart with log scale on y axis with different base
20 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
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 comentarios
Rik
el 21 de Sept. de 2020
Just make sure your baseline is below the lowest value, but above 0. That should make sure you can see all non-zero bars.
Respuestas (1)
Sindar
el 20 de Sept. de 2020
% 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 comentario
Sindar
el 20 de Sept. de 2020
if the minor grid lines show up and annoy you as much as me:
set(gca,'YMinorGrid','off')
Ver también
Categorías
Más información sobre Bar Plots en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!