Display text label on top of grouped bar plots

4 ビュー (過去 30 日間)
Frederick Awuah-Gyasi
Frederick Awuah-Gyasi 2022 年 9 月 7 日
回答済み: Alan Stevens 2022 年 9 月 7 日
Add column E as labels over the bars
Code below: related question
% Set up the problem by recreating the table.
A = [ '0' '0' '1' '1' '2' '2' '3' '3']'; %%%%%%%%%%%%%%%
B = ['0' '1' '0' '1' '0' '1' '0' '1']';
C = [2 11 32 33 38 31 47 39]';
D = [0.5 0.7 9.5 3.3 3.8 3.1 4.7 3.9]';
E = ["Q1" "Q2" "Q1" "Q4" "Q1" "Q1" "Q2" "Q1"]';
T = table(A,B,C,D,E);
% use sortrows to organize data in an expected format
T = sortrows(T,["B","A"]);
% extract x values, group names
x = str2num(unique(T.A)); %%%%%%%%%%%%%%%%%
b = unique(T.B);
% Reshape the data based on the number of unique values in A
CC = reshape(T.C,length(x),[]);
DD = reshape(T.D,length(x),[]);
EE = reshape(T.E,length(x),[]);
% plot
hold on
hb = bar(x,CC)
errorbar(x-0.15,CC(:,1),DD(:,1),'o','Color','k') %%%%%%%%%%%%%%
errorbar(x+0.15,CC(:,2),DD(:,2),'o','Color','k') %%%%%%%%%%%%%%
% legend(b)
% xtips2 = hb(2).XEndPoints;
% ytips2 = hb(2).YEndPoints;
% labels2 = string(EE(2).YData);
%
% text(xtips2,ytips2,labels2,'HorizontalAlignment','center',...
% 'VerticalAlignment','bottom')
barWidth = hb.BarWidth;
numCol = size(CC,1);
cnt = 0;
for ii = EE'
cnt = cnt + 1;
xPos = linspace(cnt - barWidth/2, cnt + barWidth / 2, numCol+1);
idx = 1;
for jj = xPos(1:end-1)
val = EE(cnt,idx);
y = M(cnt,idx);
text(jj, y + 1, num2str(val));
idx = idx +1;
end
end
hold off

採用された回答

Alan Stevens
Alan Stevens 2022 年 9 月 7 日
See answer at your earlier question.

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeLabels and Annotations についてさらに検索

製品


リリース

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by