gnuplot: создать boxplot из необработанных данных - PullRequest
1 голос
/ 11 августа 2011

может ли gnuplot создать коробочный график из файла необработанных данных? Я знаю, как я могу построить коробочную диаграмму из уже рассчитанной медианы, квартилей и т. Д. , как это - но как из файла необработанных данных?

В каждой строке файла необработанных данных есть один результат теста.

Ответы [ 3 ]

2 голосов
/ 21 октября 2011

Только что сталкивался с этим сам, в gnuplot 4.5 (версия для разработки cvs) он имеет эту функцию.

В настоящее время это означает, что вы должны скомпилировать gnuplot из исходных кодов, http://gnuplot.sourceforge.net/development/index.html#DownloadCVS.

Как только вы это сделаете, вот демонстрационный файл: http://gnuplot.sourceforge.net/demo_4.5/boxplot.html

1 голос
/ 11 августа 2011

Я думаю, что в конечном итоге вы должны использовать внешнюю программу для расчета необходимых данных для блочного графика. Я использовал 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

Вот сюжет, который вы получите:

enter image description here

0 голосов
/ 11 августа 2011

Если я правильно понимаю ваш вопрос, и вы ищете способ для вычисления среднего значения, вы можете сделать что-то вроде этого:

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

Сценарий выше вычисляет среднее значение, сумму, минимум имаксимальное значение строки данных.0 в директиве using просто принимает индекс строки данных в качестве значения 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

Вы получите следующеесюжет:

Plot of the script above

Надеюсь, это то, что вы искали.

...