我想用水平堆叠条形成一个视觉上好的情节。我的目标是用每个条形横向填充该区域。如果矩阵中的每一行总和相等,结果都很好,我想要一个具有不同和值行的那一行。
我可以将数据集的最大值设置为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]);
答案 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]);
这是输出: