Remove the edge between two stacked bars

Consider the following stacked bars
data = [2 1 ; 3 2];
b = bar(data,'stacked');
axis([0 3 0 6])
the plot I'd like to obtain is the one showed in the image below, that is stacked bars with all edges but the one between the bars.
I tried with `b(1).EdgeAlpha = 0` but this removes also the side edges of the blue bar.
A very naive (and ugly) approach is to remove all edges and then to plot a rectangle with the size of the two stacked bars
data = [2 1 ; 3 2];
bar(data,'stacked','EdgeAlpha',0);
hold on
axis([0 3 0 6])
syms x
fplot(rectangularPulse((x-1)*1.25)*sum(data(1,:)), [.6 1.4]+[-1 1]*1e-13,'k')
fplot(rectangularPulse((x-2)*1.25)*sum(data(2,:)), [1.6 2.4]+[-1 1]*1e-13,'k')
Is there a handy way using the bar properties or something else?

回答(1 个)

bar(data,'stacked','EdgeAlpha',0,'EdgeColor','none');

1 个评论

The plots generated by
bar(data,'stacked','EdgeAlpha',0,'EdgeColor','none')
and by
bar(data,'stacked','EdgeAlpha',0)
are the same and they have no edges at all, while I'd like to keep all edges but the one between the bars.

请先登录,再进行评论。

类别

在 帮助中心 和 File Exchange 中查找有关 Annotations 的更多信息

产品

版本

R2019b

标签

提问:

2020-7-24

编辑:

2020-7-24

Community Treasure Hunt

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

Start Hunting!

Translated by