How to put endpoint on Bar graph

16 views (last 30 days)
shadan Kazempour Sabahi
shadan Kazempour Sabahi on 20 Oct 2021
Edited: dpb on 20 Oct 2021
y = [75.8 78.05; 81 80.30; 91 80.78];
b = bar(y);
Hello , I want to add endpoints on each graph. How should I do that?
  3 Comments
Scott MacKenzie
Scott MacKenzie on 20 Oct 2021
OK, got it. I just posted an answer. Good luck.

Sign in to comment.

Accepted Answer

Star Strider
Star Strider on 20 Oct 2021
In R2021b, this is straightforward (and described in Specify Labels at the Ends of Bars).
y = [75.8 78.05; 81 80.30; 91 80.78];
figure
b = bar(y);
for k = 1:numel(b)
xtips = b(k).XEndPoints;
ytips = b(k).YEndPoints;
text(xtips, ytips, compose('%.2f',y(:,k)), 'Horiz','center', 'Vert','bottom')
end
In R2017b, this is a bit more involved —
figure
b = bar(y);
for k = 1:numel(b)
ctr = bsxfun(@plus, b(k).XData, [b(k).XOffset]');
ydt = b(k).YData;
str = compose('%.2f',ydt);
text(ctr,ydt, str, 'HorizontalAlignment','center', 'VerticalAlignment','bottom')
end
Experiment to get different results.
.

More Answers (1)

dpb
dpb on 20 Oct 2021
Edited: dpb on 20 Oct 2021
Like
maybe?
There's a klunky example at the doc for bar, but it is far simpler than the multi-step illustration to write it as
hB=bar(y);
arrayfun(@(h)text(h.XEndPoints,h.YEndPoints, ...
compose('%.1f',h.YData), ...
'HorizontalAlignment','center', ...
'VerticalAlignment','bottom'),hB)
Salt the format string to suit...

Tags

Products


Release

R2017b

Community Treasure Hunt

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

Start Hunting!

Translated by