【问题标题】:Boxplot in octave八度的箱线图
【发布时间】:2015-09-15 16:32:30
【问题描述】:

我正在尝试创建一个箱线图,使用 boxplot(data) 作为此示例数据

1,0.3074855004
1,0.5342907151
1,0.1243014226
1,0.8373050862
1,0.2964970712
2,0.2753391378
2,0.0662903741
2,0.7435585174
2,0.141665858
2,0.8710871406
3,0.683215396
3,0.9968826184
3,0.8009274979
3,0.6164554236
3,0.9880523647
4,0.6854059871
4,0.4828904583
4,0.6001796951
4,0.3790802876
4,0.5728325425

我希望得到一个包含四列的图表,但输出当前只显示两列。这是输出

我已尝试按照此处的文档进行操作

http://octave.sourceforge.net/statistics/function/boxplot.html

但我仍然无法获得想要的结果。

请帮助我获得正确的八度箱线图语法。

谢谢,

【问题讨论】:

    标签: graph octave boxplot


    【解决方案1】:

    你的期望是错误的。为什么boxplot() 会假设第一列是组号。 boxplot() 的文档说:

    DATA 是一个矩阵,每个数据集有一列,或者 data 是一个单元格向量,每个数据集一个单元格。

    您的数据不属于上述任何一项。

    另外,你为什么这样设置它甚至浪费内存?为什么你有一列只是为了存储组号?由于每个组似乎具有相同数量的值,因此您可以将第二列重塑为每组一列的矩阵:

    octave> reshape (data(:,2), 5, 4)
    ans =
    
       0.307486   0.275339   0.683215   0.685406
       0.534291   0.066290   0.996883   0.482890
       0.124301   0.743559   0.800927   0.600180
       0.837305   0.141666   0.616455   0.379080
       0.296497   0.871087   0.988052   0.572833
    

    或者如果每个组有不同数量的值,使用元胞数组:

    octave> accumarray (data(:,1), data(:,2), [], @(x) {x})
    ans = 
    {
      [1,1] =
    
         0.30749
         0.53429
         0.12430
         0.83731
         0.29650
    
      [2,1] =
    
         0.275339
         0.066290
         0.743559
         0.141666
         0.871087
    
      [3,1] =
    
         0.68322
         0.99688
         0.80093
         0.61646
         0.98805
    
      [4,1] =
    
         0.68541
         0.48289
         0.60018
         0.37908
         0.57283
    
    }
    

    一旦您的数据是合理的格式,boxplot() 将按您的预期工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-12
      • 1970-01-01
      相关资源
      最近更新 更多