【问题标题】:How to increase bar width without overlapping in a MATLAB bar graph?如何在 MATLAB 条形图中增加条形宽度而不重叠?
【发布时间】:2012-09-22 03:30:01
【问题描述】:

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

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

【问题讨论】:

标签: matlab graph bar-chart overlapping


【解决方案1】:

我知道的唯一方法是通过多次调用 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 不是通用的,但可以扩展以处理更广泛的输入数据。

【讨论】:

    【解决方案2】:

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

    设置宽度小于 1。 例如

    figure; bar(graph,0.4);
    

    【讨论】:

    • 0.4 是与栏在分配给它的总空间中所占空间百分比有关的值(0.4 = 40%;1 = 100%)。所以这不会改变总空间的大小,但会改变用于栏的总空间百分比的大小。将其设置为 1 以上的任何值都会使其 100+%,这会增加总大小......但这会导致重叠。如何在不重叠的情况下更改总空间大小?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-10
    • 2021-03-21
    • 2015-12-25
    • 1970-01-01
    • 2020-03-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多