代码之家  ›  专栏  ›  技术社区  ›  reformed Ezequiel García

如何在MATLAB条形图中增加条形宽度而不重叠?

  •  1
  • reformed Ezequiel García  · 技术社区  · 14 年前

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

    graph = [ 1 2 ; 3 4 ; 5 6 ; 7 8 ];
    bar(graph,'BarWidth',2);
    
    2 回复  |  直到 14 年前
        1
  •  4
  •   grantnz    14 年前

    我知道的唯一方法是通过多次拨打酒吧电话。

    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不是通用的,但可以扩展为处理更广泛的输入数据。

        2
  •  1
  •   Ravindra Bagale    14 年前

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

    设置宽度小于1。 例如。

    figure; bar(graph,0.4);