如何缩放每个不同大小的条形以填充Stacked Barh中的图?

时间:2014-12-14 14:42:04

标签: matlab plot scale stacked horizontal-scaling

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

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

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

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

感谢您提供的任何帮助。

以下是问题的示例数据集;

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]);

1 个答案:

答案 0 :(得分: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]);

这是输出: enter image description here