# How to put a numerical value inside a Bar graph?

4 views (last 30 days)
Sara Macchiavello on 29 Nov 2020
Commented: Star Strider on 29 Nov 2020
Hi!
I'd like to know how can I set the values inside the bar plot, just like this:
I obtain the following bar plot using the code above but I can't place values in the correct center position.
b = bar(X,Y);
hold on
b.FaceColor = 'flat';
b.CData(1,:) = [0 0.447 0.741]; % color editing
b.CData(2,:) = [0.850 0.325 0.098];
b.CData(3,:) = [0.466 0.674 0.188];
b.FaceAlpha = .7; % opacity
text(1:length(Y),Y,num2str(Y'),'vert','bottom','horiz','center'); % values position
std = [2.1 4.4 6]; % standard deviation
er = errorbar(X,Y,std);
er.Color = [0 0 0];
er.LineStyle = 'none';
set(gca, 'ytick', []);
box off
Thank you,
Sara

#### 1 Comment

KSSV on 29 Nov 2020

Star Strider on 29 Nov 2020
Change the text call to:
text(1:length(Y),Y/2,num2str(Y'),'vert','bottom','horiz','center'); % values position
That should work, if I understand correctly what you want to do.
.

Show 1 older comment
Star Strider on 29 Nov 2020
As always, my pleasure!
There are a few different ways to add the ‘%’:
text(1:length(Y),Y/2,[num2str(Y') ['%';'%';'%']],'vert','bottom','horiz','center'); % values position
text(1:length(Y),Y/2,sprintfc('%g%%',Y),'vert','bottom','horiz','center'); % values position
text(1:length(Y),Y/2,compose('%g%%',Y),'vert','bottom','horiz','center'); % values position
The first concatenates the ‘['%';'%';'%']’ vector to the num2str vector, the second and third use different functions to create a cell array of strings that prints the value with the ‘%’. Since the ‘%’ is a valid cointrol character to those functions, to print one ‘%’ it is necessary to use '%%', (The same is true for other control characters in these and similar functions.)
Sara Macchiavello on 29 Nov 2020
Thank you very much for your advice and explaination, you're really kind!!
Star Strider on 29 Nov 2020
As always, my pleasure!
I very much appreciate your compliment!