Effacer les filtres
Effacer les filtres

Display text label on top of grouped bar plots

2 vues (au cours des 30 derniers jours)
Frederick Awuah-Gyasi
Frederick Awuah-Gyasi le 7 Sep 2022
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

Réponse acceptée

Alan Stevens
Alan Stevens le 7 Sep 2022
See answer at your earlier question.

Plus de réponses (0)

Produits


Version

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by