1

gnuplot 可以从原始数据文件创建箱线图吗?我知道如何从已经计算的中位数、四分位数等中绘制箱线图-但是如何从原始数据文件中绘制?

在原始数据文件的每一行中都有一个测试结果。

4

3 回答 3

2

我自己刚遇到这个,在 gnuplot 4.5(目前是 cvs 开发版本)中它具有此功能。

目前这意味着您必须自己从源代码http://gnuplot.sourceforge.net/development/index.html#DownloadCVS编译 gnuplot 。

完成后,这里有一个演示文件: http: //gnuplot.sourceforge.net/demo_4.5/boxplot.html

于 2011-10-21T16:04:57.807 回答
1

我认为您最终必须使用外部程序来计算箱线图的必要数据。我用过awk,但是任何程序都可以在这个地方使用。请注意,我已经计算了每行原始数据中的开盘/收盘/最小值/最大值,而不是平均值和分位数。

set xrange [-1:9]
plot "< awk '{sum=0; opening=$1; closing=$NF; min=$1; max=$1; \
              for (i=1; i<=NF; i++) {sum=sum+$i; if ($i<min) min=$i; if ($i>max) max=$i}; \
              print sum/NF, opening, closing, min, max}' \
        junk.dat" us 0:2:4:5:3 w candle notitle

junk.dat文件中包含以下数据:

   5.532    5.040    4.962   19.314    5.136
  10.004    4.592    5.836    6.999    7.823
   8.887    6.335    5.545    5.056    6.216
   4.341    4.552    4.512    4.009    5.811
   4.724    4.869    5.016    2.593    5.662
   4.555    5.472    4.866    5.559   -0.608
   6.974    3.838    2.953    6.630    2.753
   5.571    8.112    3.261    7.029    4.375
   3.497    5.200    6.555    5.311    8.204

这是您将获得的情节:

在此处输入图像描述

于 2011-08-11T18:15:56.510 回答
0

如果我正确理解您的问题并且您正在寻找一种计算平均值的方法,您可以执行以下操作:

calc_mean(x1,x2,x3) = (x1+x2+x3)/3
calc_sum(x1,x2,x3)  = x1+x2+x3
get_min(x1,x2,x3)   = x1 < x2 ? (x1 < x3 ? x1 : (x2 < x3 ? x2 : x3)) : (x2 < x3 ? x2 : x3)
get_max(x1,x2,x3)   = x1 > x2 ? (x1 > x3 ? x1 : (x2 > x3 ? x2 : x3)) : (x2 > x3 ? x2 : x3)

plot "Data.csv" u 0:(calc_mean($1, $2, $3)) t "Mean" w l, \
         "" u 0:(calc_sum($1, $2, $3)) t "Sum" w l, \
         "" u 0:(get_min($1, $2, $3)) t "Min" w l, \
         "" u 0:(get_max($1, $2, $3)) t "Max" w l

上面的脚本计算数据行的平均值、总和、最小值和最大值。using 指令中的0只是将数据行的索引作为 x 坐标值。

具有以下内容Data.csv

0.62614   0.50293   0.62078
0.63789   0.58924   0.71288
0.16297   0.77453   0.82417
0.20703   0.22424   0.33596
0.57829   0.96545   0.60737

您将得到以下情节:

上面脚本的情节

我希望这就是你要找的。

于 2011-08-11T09:49:26.950 回答