2012-09-22 211 views
1

如何在MATLAB中增加条形图中条的宽度而不会导致条重叠?下面的脚本增加了条宽,但条重叠:如何在MATLAB条形图中增加条宽而不重叠?

graph = [ 1 2 ; 3 4 ; 5 6 ; 7 8 ]; 
bar(graph,'BarWidth',2); 
+0

调整图的大小:) –

+0

看看这里:[如何绘制hist与对数刻度](http://stackoverflow.com/q/6812899)或这里:[对数刻度(x轴)直方图](http ://stackoverflow.com/q/11933787) –

回答

4

我知道这样做的唯一方法是通过多次调用bar。

function h=BarSpecial(data, overallWidth) 
    colour = {'r','b'}; 
    [r,c] = size(data); 
    h = zeros(c,1); 
    width = overallWidth/c; 
    offset = [-width/2 width/2]; 
    for i=1:c 
     h(i) = bar(data(:,i),'FaceColor',colour{i},'BarWidth',width); 
     set(h(i),'XData',get(h(i),'XData')+offset(i)); 
     hold on    
    end  
end 

以下内容将生成条形图,其中条形占据总空间的90%。

BarSpecial(graph,0.9) 

写入的BarSpecial函数不是通用的,但可以扩展以处理更广泛的输入数据。

1

默认宽度为= 0.8。
如果宽度为1,则组内的小节会相互接触。
值> 1会产生重叠条。

设置宽度小于1. 例如,

figure; bar(graph,0.4); 
+0

0.4是与分配给它的总空间占用的空间百分比有关的值(0.4 = 40%; 1 = 100%)。因此,这不会更改总空间的大小,但会更改用于酒吧的总空间百分比的大小。将其设置为大于1的任何值都会使其达到100 +%,这会增加总大小......但这会导致重叠。如何在不重叠的情况下更改总空间大小? – reformed

相关问题