バーをオーバーラップさせずに、MATLABの棒グラフのバーの幅を増やすにはどうすればよいですか?以下のスクリプトはバーの幅を広げますが、バーは重なります。
graph = [ 1 2 ; 3 4 ; 5 6 ; 7 8 ];
bar(graph,'BarWidth',2);
バーをオーバーラップさせずに、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);