Matlab:绘制条形图组

时间:2014-05-15 07:58:29

标签: matlab

我想绘制条形图,其中条形图分组如下:

enter image description here

我试过这段代码,但我没有得到这种类型的情节。请指导我如何生成如上图:

 load Newy.txt;        
 load good.txt;  

 one = Newy(:,1);    
 orig = good(:,1);    


hold on
bar(one,'m');
bar(orig,'g');
hold off
set(gca,'XTickLabel',{'0-19','20-39','40-79','80-159','160-319','320-639','640-1279','1280-1500'})

在每个文本文件中都有一个数字列表。该列表包含8个值。

2 个答案:

答案 0 :(得分:0)

您可以使用histc来计算某些边缘内的值。 要对条形图进行分组,您可以在单个矩阵中收集它们(每列中包含值)。

edges = [0 20 40 80 160 320 640 1280 1501];
edLeg = cell(numel(edges)-1,1);
for i=1:length(edLeg)
    edLeg{i} = sprintf('%d-%d',edges(i),edges(i+1)-1);
end
n = histc([one,orig],edges);
bar(n(1:end-1,:));
set(gca,'XTickLabels',edLeg)
legend('One','Orig')

我用这些作为测试数据

one = ceil(1500.*rand(200,1));
orig = ceil(1500.*rand(200,1));

答案 1 :(得分:0)

我找到了实现组合栏的方法:

我必须绘制数据,以便有8组条形图,其中每组包含3个条形图。

为此,我在每个文件中写了这样的数据:

Y = [30.9858    1.36816 38.6943
    0.655176    6.44236 13.1563
    1.42942     3.0947  0.621403
     22.6364    2.80378 17.1299
    0.621871    5.37145 1.87824
    0.876739    5.97647 3.80334
     40.6585    68.6757 23.0408
     2.13606    6.26739 1.67559

    ];
bar(Y)