我正在尝试使用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
但我仍然无法获得理想的结果。
请帮助我使用正确的语法,以便在八度音程中获得正确的箱形图。
谢谢,
答案 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()
将按预期工作。