2012-09-22 207 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

相關問題