MATLAB Answers

Bar Graph Stacked with Negative and Positive values

144 views (last 30 days)
Brishen
Brishen on 7 Oct 2011
Edited: Koorosh Aslansefat on 17 Jul 2020
Hi.
I'm trying to get a plot to act like the graph function in excel that stacks values together. It does this by putting all positive values on the positive part of the axis, and the negative values on the negative side.
Unfortunatly when I use bar(X,'stack') with matlab it doesn't do this.
Is there any way to get this same functionality? Thanks.

Accepted Answer

Brishen
Brishen on 7 Oct 2011
I think that I figured this out. The trick is to do two graphs and to seperate out the positive and negative values:
>> X = rand(4,3) - 0.5;
>> Xneg = X;
>> Xneg(Xneg>0) = 0;
>> Xpos = X;
>> Xpos(Xpos<0) = 0;
>> hold on
>> bar(Xneg,'stack')
>> bar(Xpos,'stack')
>> hold off

More Answers (2)

Walter Roberson
Walter Roberson on 7 Oct 2011
It isn't clear to me that what you describe would be appropriate? 'stacked' means to show the cumulative sum with internal divisions. If some members of the bar are positive and others are negative, then if you have a break at the axis then you misrepresent the cumulative sum.
  2 Comments
Walter Roberson
Walter Roberson on 7 Oct 2011
Something like this, perhaps:
t1 = X;
t2 = X;
t1(t1<0) = nan;
t2(t2>0) = nan;
Xsplit = reshape([t2.';t1.'],size(t,2),[]).';
bar(Xsplit,'stacked')

Sign in to comment.


Koorosh Aslansefat
Koorosh Aslansefat on 17 Jul 2020
Edited: Koorosh Aslansefat on 17 Jul 2020
I would suggest to try this:
bar(X,'BaseValue',0)

Community Treasure Hunt

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

Start Hunting!