Matlab`bar`:控制条组之间的间距

时间:2018-05-18 21:14:22

标签: matlab bar-chart

以下内容创建了一对条形码:

x = rand(10,2);
hBar = bar(x)

每对之间有很多空间。如何减少对之间的间距(不是每对中的条之间)?

get(h(1))没有透露任何可能改变的属性。属性BarWidth仅控制每对中的条之间的间距。

属性编辑器也没有透露可能的候选人。

我正在使用Matlab 2015b。

Afternote:width指定一个宽bar个参数可以扩展每个条形而不会相互改变它们的位置,这样一定会缩小条形组之间的差距。但是,它也会导致每组内的条形重叠。

1 个答案:

答案 0 :(得分:1)

在MATLAB R2017a中,bar(...,'hist')使用较旧的样式条形图,不使用Bar图形对象,而是使用更低级别的Patch图形对象。 (我指定了版本号,因为这不是文档中提到的内容,因此新版本可能会以不同方式执行此操作。)

我能够修改这些Patch个对象的顶点位置,以移动条形图,增加组内的空间并减少组之间的空间。默认情况下,组内的条形图使用'hist'选项进行触摸。

x = rand(10,2);
hBar = bar(x,'hist');

v = hBar(1).Vertices;
v(:,1) = v(:,1) - 0.1; % shift x locations left
hBar(1).Vertices = v;

v = hBar(2).Vertices;
v(:,1) = v(:,1) + 0.1; % shift x locations right
hBar(2).Vertices = v;

修改上面的代码以进行更精细的条形放置应该相对容易。请注意,每个条形使用5个顶点。在2个柱的情况下,左边的一个在右边有圆形值,右边一个在左边有圆形值。您可以通过mod(v(:,1),1)==1识别这些值。但是对于更多的酒吧来说这不会成功。也许单独调整值v(ii:5:end,1),对于ii从1到5,将是最简单的方法。