Info
此问题已关闭。 请重新打开它进行编辑或回答。
Combined stacked and multi-bar barchart
2 次查看(过去 30 天)
显示 更早的评论
I have three data columns (Y(:,1:3)) and their corresponding errors (Y(:,4:6)). What I want is Y(:,1) grouped with a stacked bar of Y(:,2:3).
The following code creates the attached plot.
figure;
b = bar(2:2:40,Y(:,1:3),'FaceColor','flat','EdgeColor','none');
X=cell2mat(get(b,'XData')).'+[b.XOffset];
b(1).FaceColor = [0 0 0];
b(2).FaceColor = [0.9 0 0];
b(3).FaceColor = [0 0.7 0];
hold on
errorbar(X(:,1),Y(:,1),Y(:,4),'LineStyle','none','Color',[0.6 0.6 0.6]);
errorbar(2:2:40,Y(:,2),Y(:,5),'LineStyle','none','Color',b(2).FaceColor*0.6);
errorbar(X(:,3),Y(:,3),Y(:,6),'LineStyle','none','Color',b(3).FaceColor*0.6);
hold off
So I want the green bar on top of the red bar (if green > 0, otherwise green bar below zero as usual). Repositioning the error bars is not a problem.
Is there any way to cleanly group stacked bars? I guess I could figure out some workaround by adding multiple bar plots together, but that seems messy and very time intensive....
Thanks!
(using Matlab 2020b)
3 个评论
dpb
2021-4-27
I was asking if you wanted the green and red stacked or still wanted a third bar if green <0.
If just use 'stacked' for those two columns, the negative values will still be below the y axis, just not offset horizontally from the red.
回答(0 个)
此问题已关闭。
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!