Vertically overlapping 'stacked' bars

9 views (last 30 days)
Philip Berg
Philip Berg on 30 Jan 2017
Answered: Iddo Weiner on 1 Feb 2017
I have some data I want to display as a bar plot. But, some of the values are positive and some are negative, this makes the bars overlap, vertically, when using 'stacked'. Now, at least for me, each group only has two bars stacked on top of each other. Instead of MATLAB's default, I would like to display half of the side (right or left) in the color of on of the bars, and the other side in the other color of the other to indicate how big the "hidden" bar is. Thanks for any help. (MATLAB R2015b)

Answers (2)

Iddo Weiner
Iddo Weiner on 31 Jan 2017
Hope I understood correctly.. Try this:
a = rand(5,1);
b = -1 * rand(5,1);
data = [a b];
bar(data)
legend('positive value','negative value')
  1 Comment
Philip Berg
Philip Berg on 31 Jan 2017
If you had used 'stacked', sorry, I only noted this in the title so I have slightly edited my post. But, you also don't have issues with "hidden" bars or any form of vertical overlay, which you will get if you change to 'stacked'.

Sign in to comment.


Iddo Weiner
Iddo Weiner on 1 Feb 2017
Philip, I think I understand - you insist on having your bars stacked, but when you do so with negative values, this "hides" some of the data, right?
Here's an idea - make your bars semi-transparent:
a = rand(5,1);
b = -1 * rand(5,1);
data = [a b];
bar(data,'stacked')
alpha (0.5)
legend('positive value','negative value')
This way you see the hidden data.. Does this help?

Tags

Community Treasure Hunt

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

Start Hunting!