以下内容创建了一对条形码:
x = rand(10,2);
hBar = bar(x)
每对之间有很多空间。如何减少对之间的间距(不是每对中的条之间)?
get(h(1))
没有透露任何可能改变的属性。属性BarWidth
仅控制每对中的条之间的间距。
属性编辑器也没有透露可能的候选人。
我正在使用Matlab 2015b。
Afternote:为width
指定一个宽bar
个参数可以扩展每个条形而不会相互改变它们的位置,这样一定会缩小条形组之间的差距。但是,它也会导致每组内的条形重叠。
答案 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,将是最简单的方法。