Plot absolute values in stacked bar plot
Mostra commenti meno recenti
Dear all,
I am creating a stacked bar plot showing ABSOLUTE values (see figure attached).
I am wondering how I can plot the absolute, not the relative numbers, on the seperate bar segments (as depicted by white numbers on the attached plot).
Thank you and all the best,
Lisa
2 Commenti
Dyuman Joshi
il 17 Gen 2023
Please attach your data or give a sample data.
Lisa Rosenblum
il 18 Gen 2023
Risposte (1)
x = [15 40 22; 6 13 4];
b = bar(x,'stacked','FaceColor','flat');
ylim([0 100])
legend({'1','2','3'});
ylabel('%')
xticklabels({'Yes', 'No'})
a = get(gca,'XTickLabel');
set(gca,'XTickLabel',a,'fontsize',16)
%defining x and y coordinates and labels
xt = [1 2 1 2 1 2];
yt = reshape(cumsum(x,2),1,[])-2;
label = reshape(x,1,[]);
text(xt,yt,string(label),'HorizontalAlignment','center','FontSize',7,'Color','k')
%white didn't look good
legend boxoff
2 Commenti
Elli
il 18 Gen 2023
Great, that works perfect! Thanks!
Which part would need to be adjusted if working with more than two bars? For example with an input variable such as
x = [15 40 22; 6 13 4; 17 30 5];
@Elli, that would be like this -
x = [15 40 22; 6 13 4; 17 30 5];
b = bar(x,'stacked','FaceColor','flat');
ylim([0 100])
legend({'1','2','3'});
ylabel('%')
xticklabels({'Yes', 'No'})
a = get(gca,'XTickLabel');
set(gca,'XTickLabel',a,'fontsize',16)
%defining x and y coordinates and labels
%part adjusted
%you can verify the code by using any numbers of rows in your data
r = size(x,1);
xt = repmat([1:r],1, r);
yt = reshape(cumsum(x,2),1,[])-2;
label = reshape(x,1,[]);
text(xt,yt,string(label),'HorizontalAlignment','center','FontSize',7,'Color','k')
%white didn't look good
legend boxoff
Categorie
Scopri di più su Graphics Object Properties in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

