How can I get a stacked bar graph with a single bar?

30 views (last 30 days)
Hello,
I am trying to get a single bar using the stacked property:
figure; bar([0.2 0.8], 'stacked')
This does not create a single stacked bar, it creates two bars of height 0.2 and 0.8.
A work-around is:
figure;bar([0.2 0.8; 1 1],'stacked'); set(gca,'xlim',[0.5 1.5])
But this seems like a silly thing to have to do.
Does anyone know why the stacked input doesn't seem to work for a single bar?
Thanks.

Accepted Answer

Star Strider
Star Strider on 15 Jul 2016
One possibility for a workaround:
v = [0.2 0.8];
figure;
bar(sum(v), 'y')
hold on
bar(v(1), 'b')
hold off
  6 Comments
André Bigalke
André Bigalke on 22 Jun 2018
Edited: André Bigalke on 22 Jun 2018
just add 1 line to limit the x axis:
bar([1,2,3,4,5,6,7,8,9,10,11,12,13; nan(1,13)], 'Stacked');
set(gca,'xtick',1);
xlim([0.25 1.75]);
Martijn
Martijn on 9 Jan 2019
Note that if you also actually specify x values and use a NaN there as well, you do not have to tweak the limits and ticks:
bar([1;nan], [1:3; nan(1,3)], 'stacked')

Sign in to comment.

More Answers (1)

Daniel
Daniel on 11 Feb 2020
Edited: Daniel on 27 Apr 2020
(requires MATLAB 2019b or later)
bar(1,[0.2 0.8], 'stacked')
Use the bar(x,y) synatax instead of bar(y). This way you can control if the bars are grouped.
  4 Comments
Michaela Konstantinou
Michaela Konstantinou on 27 Apr 2022
Do you maybe know how to remove the margins from left anr right? Thanks
Thiago de Aquino Costa Sousa
Edited: Thiago de Aquino Costa Sousa on 5 Oct 2022
@Daniel Do you know how to overlap the series instead of summing then? If you see your bar graph it is summing your data series, and stacking them. I would like to have the same graph but with the time series overlapped to highlight the difference between the serires. Thank you.

Sign in to comment.

Tags

Community Treasure Hunt

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

Start Hunting!