如何在MATLAB中增加条形图中条的宽度而不会导致条重叠?下面的脚本增加了条宽,但条重叠:如何在MATLAB条形图中增加条宽而不重叠?
graph = [ 1 2 ; 3 4 ; 5 6 ; 7 8 ];
bar(graph,'BarWidth',2);
如何在MATLAB中增加条形图中条的宽度而不会导致条重叠?下面的脚本增加了条宽,但条重叠:如何在MATLAB条形图中增加条宽而不重叠?
graph = [ 1 2 ; 3 4 ; 5 6 ; 7 8 ];
bar(graph,'BarWidth',2);
我知道这样做的唯一方法是通过多次调用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函数不是通用的,但可以扩展以处理更广泛的输入数据。
默认宽度为= 0.8。
如果宽度为1,则组内的小节会相互接触。
值> 1会产生重叠条。
设置宽度小于1. 例如,
figure; bar(graph,0.4);
0.4是与分配给它的总空间占用的空间百分比有关的值(0.4 = 40%; 1 = 100%)。因此,这不会更改总空间的大小,但会更改用于酒吧的总空间百分比的大小。将其设置为大于1的任何值都会使其达到100 +%,这会增加总大小......但这会导致重叠。如何在不重叠的情况下更改总空间大小? – reformed
调整图的大小:) –
看看这里:[如何绘制hist与对数刻度](http://stackoverflow.com/q/6812899)或这里:[对数刻度(x轴)直方图](http ://stackoverflow.com/q/11933787) –