
How to creat nonlinear bin histogram/bar plot with same Bar width?
5 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
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 Kommentare
Akzeptierte Antwort
Star Strider
am 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 Kommentare
Weitere Antworten (1)
mirza
am 26 Dez. 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 Kommentare
Siehe auch
Kategorien
Mehr zu Model Building and Assessment finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!