八度的箱形图

时间:2015-09-15 16:32:31

标签: graph octave boxplot

我正在尝试使用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

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

output

我试过按照这里的文档

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

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

请帮助我使用正确的语法,以便在八度音程中获得正确的箱形图。

谢谢,

1 个答案:

答案 0 :(得分:0)

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

  

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()将按预期工作。