# How to transform the normalized values of a histogram (i.e. the bars heights) in percentages?

2 views (last 30 days)
Sim on 8 Feb 2023
Commented: Star Strider on 8 Feb 2023
How to transform the normalized values of this histogram (i.e. the bars heights) in percentages?
I should multiply the bars values by 100, but how to do it ? (maybe inside the "histogram" function)
a = [0 0 0 1 1 1 1 1 1 3 3 3 2 2 4 4 39 39 39 39 39 39 40 40 40 40 40 40 40 0 0 0 0 0 0 0 41 41 41];
histogram(a,'Normalization','probability')
This could be a workaround:
bar(histcounts(a)/(sum(histcounts(a)))*100)
BUT:
1. the bars are shifted towards right (why??)
2. I would like to still use the "histogram" function (if possible, obviously)
Any idea ?
Les Beckham on 8 Feb 2023
You are quite welcome.

Star Strider on 8 Feb 2023
Altering the histogram plot is likely not possible because the ‘Values’ vector is read-only.
The easiest approach is likely to re-plot the bar plot using the derived values —
a = [0 0 0 1 1 1 1 1 1 3 3 3 2 2 4 4 39 39 39 39 39 39 40 40 40 40 40 40 40 0 0 0 0 0 0 0 41 41 41];
figure
hh = histogram(a,'Normalization','probability');
xlabel('Centers')
ylabel('Probability')
Values = hh.Values*100;
Cntrs = hh.BinEdges(1:end-1) + diff(hh.BinEdges)/2;
figure
bar(Cntrs, Values)
xlabel('Centers')
ylabel('Percent')
.
Star Strider on 8 Feb 2023
As always, my pleasure!

### Categories

Find more on Data Distribution Plots in Help Center and File Exchange

### Community Treasure Hunt

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

Start Hunting!

Translated by