gnuplot: создать коробчатую диаграмму из необработанных данных

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

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


person Jojo    schedule 11.08.2011    source источник


Ответы (3)


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

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

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

person Roscot    schedule 21.10.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

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

введите описание изображения здесь

person Sunhwan Jo    schedule 11.08.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

У вас получится следующий сюжет:

Сюжет сценария выше

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

person Woltan    schedule 11.08.2011