# 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!