Labels to a stacked bar

22 Ansichten (letzte 30 Tage)
Milosha Britto Nordbø
Milosha Britto Nordbø am 30 Jul. 2020
Kommentiert: Adam Danz am 13 Apr. 2022
I am trying to add labels for a stacked bar and need to help. I managed to add label to each part of the stack but unable to add at the total level (circled in red).

Akzeptierte Antwort

Adam Danz
Adam Danz am 30 Jul. 2020
Bearbeitet: Adam Danz am 30 Jul. 2020
Here's a demo.
% Create stacked bar plot
x = randi(3,20,5);
h = bar(x,'stacked');
% Get the (x,y) coordinates for the top of each bar stack
y = sum(reshape(cell2mat(get(h', 'YData')),size(h,2),[]),1);
x = unique(cell2mat(get(h', 'XData')),'stable')
% Define labels
labels = num2cell(char(((1:size(x,1))+64)'))'; % 'A' 'B' 'C' ...
% Plot the text labels
offset = range(ylim)*.01;
th = text(x,y+offset,labels,'HorizontalAlignment','left',...
'VerticalAlignment','middle','rotation',90)
If you don't want to rotate the text labels,
th = text(x,y,string(y'),'HorizontalAlignment','Center',...
'VerticalAlignment','bottom');
For bar plots that are stacked and grouped, see this answer.
  6 Kommentare
Prasad Joshi
Prasad Joshi am 13 Apr. 2022
Can you answer this question Adam thanks in advance
Adam Danz
Adam Danz am 13 Apr. 2022
Hello @Prasad Joshi, which question?

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Milosha Britto Nordbø
Milosha Britto Nordbø am 30 Jul. 2020
Bearbeitet: Adam Danz am 30 Jul. 2020
Thank you for tips. I used the below codes and got the follwing results:
bh=bar(Year,ValCha,'stacked');
y=sum(reshape(cell2mat(get(bh','YData')),size(bh,2),[]),1)
x=unique(cell2mat(get(bh','XData')),'stable')
th = text(x,y,string(y'),'HorizontalAlignment','left',...
'VerticalAlignment','middle','rotation',0)
I require the some help in correting the circle in pic. I need a little gap between the bars and number.
How can i do it?

Community Treasure Hunt

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

Start Hunting!

Translated by