
How to creat nonlinear bin histogram/bar plot with same Bar width?
10 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I am try to plot a histogram with uneven space bars in definition ( Logarithmic etc.), but I want all bar looks same width instead. Thanks for sharing the method to do it.
0 commentaires
Réponse acceptée
Star Strider
le 2 Mai 2014
Here is one way to use regular-width bins spaced logarithmically:
x = 10+2*randn(1, 100); % Create data
bins = linspace(floor(min(x)), ceil(max(x)), 25); % Define bins
xc = histc(x,bins); % Do histogram counts
figure(1)
bar(log(bins), xc) % Plot bars against log of ‘bins’
logxts = get(gca, 'XTick') % 'XTick' values currently logarithmic
expxts = exp(logxts); % Take antilog to use them as new ‘XTickLabels’
set(gca, 'XTickLabel', floor(100*expxts)/100)
The plot:

This produces logarithmic X-axis values (scaling and labels) for the bar plot. If you want to experiment with other transformations, be sure you can uniquely inverse-transform them to get the X-axis labels.
2 commentaires
Plus de réponses (1)
mirza
le 26 Déc 2016
You basically need to do 2 things:
1- Make the bin edges follow a logarithmic scale.
2- Set the x-axis to logarithmic scale.
y=100*rand(1000,1); % create random data
x=logspace(-1,2,20); % create bin edges with logarithmic scale
histogram(y,x); % create the plot
set(gca,'xscale','log'); % scale the x-axis

0 commentaires
Voir également
Catégories
En savoir plus sur Model Building and Assessment dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!