【问题标题】:Matlab: Plotting bar groupsMatlab:绘制条形组
【发布时间】:2014-05-15 07:58:28
【问题描述】:

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

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

 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 个值。

【问题讨论】:

  • 你有样本数据吗?
  • @kkuilla 在 Newy.txt 和 good.txt 中,有一个值列表。每个文件包含八个值。
  • 抱歉,文件太厚了,文件在哪里?在任何地方都看不到它们。

标签: matlab


【解决方案1】:

您可以使用 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));

【讨论】:

    【解决方案2】:

    我有办法实现群吧:

    我必须将数据绘制成 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)
    

    【讨论】:

      猜你喜欢
      • 2014-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-27
      • 2018-08-18
      相关资源
      最近更新 更多