0

我想用水平堆积条制作一个视觉上很好的情节。我的目标是用每个条水平填充该区域。如果矩阵中的每个行的总和都相等,那么结果很好,我想要具有不同总和值行的那个。

我可以将数据集的最大值设置为 xlim。

但是如何拉伸或缩放不同的 sum-value-stackedbars?

条形值当前位于 a 条形中,因此重点在于视觉外观。

我将不胜感激您能提供的任何帮助。

这是该问题的示例数据集;

t = [2 19 10 0;2 17 13 0;2 14 17 0;0 14 18 2;1 11 22 1;0 15 19 2;1 12 23 1;1 16 20 1;1 20 16 1];
barh(t,'stacked');

for i = 1 : 9
    num(i) = sum(t(i,:));
end
xlim = max(num);

set(gca,'XLim',[0 xlim]);
4

1 回答 1

1

我不确定我是否理解正确,但您说我的目标是用每个条水平填充该区域。所以检查下面的代码,它可能是你的意思:

t     = [2 19 10 0;2 17 13 0;2 14 17 0;0 14 18 2;1 11 22 1;0 15 19 2;1 12 23 1;1 16 20 1;1 20 16 1];
num   = sum(t, 2);
xlim  = max(num);
scale = xlim ./ num;
t_new = t .* ( scale * ones(1, 4) );
barh(t_new, 'stacked');
set(gca,'XLim',[0 xlim]);

这是输出: 在此处输入图像描述

于 2014-12-14T15:28:13.477 回答