Plot absolute values in stacked bar plot

조회 수: 1 (최근 30일)
Lisa Rosenblum
Lisa Rosenblum 2023년 1월 17일
댓글: Dyuman Joshi 2023년 1월 18일
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
Dyuman Joshi
Dyuman Joshi 2023년 1월 17일
Please attach your data or give a sample data.
Lisa Rosenblum
Lisa Rosenblum 2023년 1월 18일
Hi Dyuman, attached please find the code.
The final plot should look like the on on the previously attached file.
Thanks you so much!
x = [ 15 40 22; 6 13 4];
ba = bar(X,'stacked','FaceColor','flat')
ylim([0 100])
leg = legend({'1','2','3'})
ylabel(['%'])
xticklabels({'Yes', 'No'})
a = get(gca,'XTickLabel');
set(gca,'XTickLabel',a,'fontsize',16)
legend boxoff

댓글을 달려면 로그인하십시오.

답변 (1개)

Dyuman Joshi
Dyuman Joshi 2023년 1월 18일
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
Elli
Elli 2023년 1월 18일
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];
Dyuman Joshi
Dyuman Joshi 2023년 1월 18일
@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

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Graphics Object Properties에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by